[bug-bash] print maps a missing item's HTTP 404 to exit 1 instead of documented not-found exit 5
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 78/100
Direção de pesquisa
Comece por PrintCommand.PrintItemAsync e seu ramo NotFound de ReadItemStreamAsync; em seguida, acompanhe como ShellExitCode mapeia erros de comando para códigos de saída. Confira o contrato documentado dos códigos de saída e os testes próximos para leituras pontuais. O trabalho estará concluído quando um item ausente ainda gerar a mensagem de erro amigável e retornar o código de saída 5.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- C#
- Estrelas
- 4
- Forks
- 7
- Merge médio
- 1d 23h
- PRs com merge (30d)
- 23
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de Azure/CosmosDBShell
-
[bug-bash] Sequential script commands leak their result into rm as implicit pipe inputTalvez já em andamento @mkrueger assumiu hoje. Abertabug bug-bash
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 75/100
Azure/CosmosDBShell#281 ·
Mantenedores costumam responder em até 1 dia
-
[bug-bash] Invalid command arguments return general-failure exit 1 instead of documented usage exit 2Talvez já em andamento @mkrueger assumiu há 1 dia. Abertabug bug-bash
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 68/100
Azure/CosmosDBShell#280 ·
Mantenedores costumam responder em até 1 dia
-
[bug-bash] edit and theme failures silently return exit 1 without a machine-readable stderr errorTalvez já em andamento @mkrueger assumiu há 1 dia. Abertabug bug-bash
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 62/100
Azure/CosmosDBShell#278 ·
Mantenedores costumam responder em até 1 dia
-
[bug-bash] Multi-statement -c and piped stdin silently drop intermediate output and file redirectionsTalvez já em andamento @mkrueger assumiu há 1 dia. Abertabug bug-bash
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 75/100
Azure/CosmosDBShell#277 ·
Mantenedores costumam responder em até 1 dia
-
Connection to mcp failed?Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 35/100
Azure/CosmosDBShell#274 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de Azure/CosmosDBShell
Issues semelhantes
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 80/100
Unity-Technologies/unity-agent-plugin#118 ·
Mantenedores costumam responder em até 1 dia
-
The Recommended preset turns on Import Uno DSP, which only works with the Material themeTalvez já em andamento @agneszitte assumiu hoje. Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 92/100
unoplatform/uno.templates#2388 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
eyalgolan/statecraft-israel#2732 ·
Mantenedores costumam responder em até 1 dia
-
変換の候補のどれが Zenzai の答えか分からないAberta要トリアージ
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
Mantenedores costumam responder em até 1 dia
-
kind/chore status/draft
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
Altinn/altinn-events#1158 ·
Mantenedores costumam responder em até 1 dia