[bug-bash] print maps a missing item's HTTP 404 to exit 1 instead of documented not-found exit 5
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 新手友好度
- 78/100
调研方向
从 PrintCommand.PrintItemAsync 及其 ReadItemStreamAsync 的 NotFound 分支开始,然后追踪 ShellExitCode 如何将命令错误映射为退出码。检查文档中的退出码约定,以及附近针对单项读取的测试。完成标准是:当项目不存在时,仍显示友好的错误消息并返回退出码 5。
由索引模型根据 Issue 内容生成。
描述
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.
- 主要语言
- C#
- 星标
- 4
- 派生
- 7
- 平均合并
- 2 天 2 小时
- 30 天内合并 PR
- 24
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
Azure/CosmosDBShell 的其他 Issue
-
bug bug-bash
难度 3/5 1-2 天 新手友好度 75/100
Azure/CosmosDBShell#281 ·
维护者通常 1 天内回复
-
bug bug-bash
难度 3/5 1-2 天 新手友好度 68/100
Azure/CosmosDBShell#280 ·
维护者通常 1 天内回复
-
[bug-bash] edit and theme failures silently return exit 1 without a machine-readable stderr error未关闭bug bug-bash
难度 3/5 1-2 天 新手友好度 62/100
Azure/CosmosDBShell#278 ·
维护者通常 1 天内回复
-
bug bug-bash
难度 3/5 1-2 天 新手友好度 75/100
Azure/CosmosDBShell#277 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 35/100
Azure/CosmosDBShell#274 · 1 条评论 ·
维护者通常 1 天内回复
查看 Azure/CosmosDBShell 的全部 Issue
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 62/100
KnifeLemon/Filee#1118 ·
维护者通常 1 天内回复
-
难度 1/5 1 小时以内 新手友好度 72/100
-
难度 2/5 1-3 小时 新手友好度 68/100
Facepunch/sbox-public#12284 ·
维护者通常 6 天内回复
-
bug untriaged
难度 2/5 1-3 小时 新手友好度 67/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
CarlosAdrianM/Nesto#610 ·