[bug-bash] print maps a missing item's HTTP 404 to exit 1 instead of documented not-found exit 5
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 78/100
Línea de trabajo
Empieza por PrintCommand.PrintItemAsync y su rama NotFound de ReadItemStreamAsync; después, sigue cómo ShellExitCode asigna los errores de los comandos a los códigos de salida. Comprueba el contrato documentado de los códigos de salida y las pruebas cercanas para las lecturas puntuales. Se considera terminado cuando, si falta un elemento, se muestra el mensaje de error claro y se devuelve el código de salida 5.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Environment
Windows x64, CosmosDBShell 1.1.291-preview (db49321323).
Verified on a disposable container with partition key /pk, using an authorized
Azure CLI identity and Gateway connection mode.
Repro
The following creates a unique disposable shared-throughput database (400 RU/s)
and an empty container. Supply an authorized Azure NoSQL account using these
environment variables; no real endpoint or identity is included in this report:
# Set COSMOS_ENDPOINT, AZURE_SUBSCRIPTION_ID and COSMOS_RESOURCE_GROUP first.
foreach ($name in @('COSMOS_ENDPOINT', 'AZURE_SUBSCRIPTION_ID', 'COSMOS_RESOURCE_GROUP')) {
if ([string]::IsNullOrWhiteSpace([Environment]::GetEnvironmentVariable($name))) {
throw "Set $name to an authorized test account value before continuing."
}
}
$package = "$env:USERPROFILE\.dotnet\tools\.store\cosmosdbshell\1.1.291-preview"
$shell = Join-Path $package 'cosmosdbshell.win-x64\1.1.291-preview\tools\net10.0\win-x64\CosmosDBShell.exe'
& $shell --version
$connection = @(
'--connect', $env:COSMOS_ENDPOINT,
'--connect-azure-cli', '--connect-mode', 'gateway',
'--connect-subscription', $env:AZURE_SUBSCRIPTION_ID,
'--connect-resource-group', $env:COSMOS_RESOURCE_GROUP,
'--output', 'json', '--quiet'
)
$db = 'BugBash_Print_' + [guid]::NewGuid().ToString('N')
& $shell @connection -c "mkdb $db --scale=m --ru=400"
if ($LASTEXITCODE -ne 0) { throw 'Fixture database creation failed; stop.' }
& $shell @connection --database $db -c 'mkcon Items /pk'
if ($LASTEXITCODE -ne 0) { throw 'Fixture container creation failed; stop.' }
# Exact failing command. The new container is empty, so this item cannot exist.
& $shell @connection --database $db --container Items -c 'print absent p1'
$readExit = $LASTEXITCODE
"Observed exit code: $readExit"
Actual: Observed exit code 1. Expected: 5.
Expected
A point read that returns HTTP 404 maps to not-found exit code 5, as documented
in the CLI's exit-code contract.
Actual
The command returns exit code 1, with a JSON stderr error saying the item was
not found and suggesting the partition key be verified.
Observed direct live reproduction:
print absent p1
stderr:
{"status":"error","error":"Item with id 'absent' not found using partition key 'p1'. Verify the partition key value is correct."}
Also reproduced for an item correctly absent after atomic batch rollback, and
after a successful explicit item deletion. This is an exit-code classification
bug, not a batch rollback or item deletion failure.
Cleanup
Delete only the database created by the commands above:
& $shell @connection -c "rmdb $db true"
Investigation lead
PrintCommand.PrintItemAsync uses ReadItemStreamAsync. Its explicit NotFound
branch throws a plain CommandException without preserving the HTTP status or
an SDK exception. ShellExitCode therefore cannot recognize the original 404
and falls back to general failure.
The fix should preserve the useful friendly error message while retaining the
original status classification. No fix has been implemented.
- Lenguaje dominante
- C#
- Estrellas
- 4
- Forks
- 7
- Merge medio
- 2 d 2 h
- PR fusionados (30 d)
- 24
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Azure/CosmosDBShell
-
bug bug-bash
Dificultad 3/5 1-2 días Aptitud para principiantes 75/100
Azure/CosmosDBShell#281 ·
Los mantenedores suelen responder en 1 día
-
bug bug-bash
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
Azure/CosmosDBShell#280 ·
Los mantenedores suelen responder en 1 día
-
[bug-bash] edit and theme failures silently return exit 1 without a machine-readable stderr errorAbiertobug bug-bash
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
Azure/CosmosDBShell#278 ·
Los mantenedores suelen responder en 1 día
-
bug bug-bash
Dificultad 3/5 1-2 días Aptitud para principiantes 75/100
Azure/CosmosDBShell#277 ·
Los mantenedores suelen responder en 1 día
-
Connection to mcp failed?Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
Azure/CosmosDBShell#274 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de Azure/CosmosDBShell
Issues similares
-
needs-area-label
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 2 días
-
bug github_actions
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
endercodezz/BYDLO#336 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
SubtitleEdit/subtitleedit#16638 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
sebastienros/jint#4449 ·
Los mantenedores suelen responder en 1 día