aai-institute / aai-institute/lakefs-spec

Writing to protected branches produces a `lakefs.ForbiddenException` instead of a `PermissionError`

未关闭
#296 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
bug triage
主要语言
Python
星标
65
派生
7
PR 合并指标
30 天内没有已合并 PR

描述

### What happened?

We have an exception translator that translates lakefs API exceptions to builtin Python exceptions to ensure conformity of our fsspec implementation.

I just tried streaming JSON data directly into lakeFS for our nnbench project with a command like this:

```console
nnbench .sandbox/example.py -o "lakefs://quickstart/test/res.json"
```

Details are not as important, it just calls `fs.open()` under the hood and passes the resulting file descriptor off to `json.dump()`. When attempting to write that file in a fresh lakeFS quickstart repo like above, I get the following exception:

```
Traceback (most recent call last):
File "/Users/nicholasjunge/Workspaces/python/nnbench/.venv/bin/nnbench", line 8, in
sys.exit(main())
^^^^^^
File "/Users/nicholasjunge/Workspaces/python/nnbench/src/nnbench/cli.py", line 64, in main
f.write(record, outfile)
File "/Users/nicholasjunge/Workspaces/python/nnbench/src/nnbench/reporter/file.py", line 288, in write
with fd as fp:
File "/Users/nicholasjunge/Workspaces/python/nnbench/.venv/lib/python3.11/site-packages/lakefs/object.py", line 162, in __exit__
self.close()
File "/Users/nicholasjunge/Workspaces/python/nnbench/.venv/lib/python3.11/site-packages/lakefs/object.py", line 487, in close
stats = self._upload_presign() if self.pre_sign else self._upload_raw()
^^^^^^^^^^^^^^^^^^
File "/Users/nicholasjunge/Workspaces/python/nnbench/.venv/lib/python3.11/site-packages/lakefs/object.py", line 540, in _upload_raw
handle_http_error(resp)
File "/Users/nicholasjunge/Workspaces/python/nnbench/.venv/lib/python3.11/site-packages/lakefs/exceptions.py", line 159, in handle_http_error
raise lakefs_ex
lakefs.exceptions.ForbiddenException: code: 403, reason: Forbidden, body: {'message': 'cannot write to protected branch'}
```

So it seems that we're missing a `raise translate_lakefs_error()` somewhere in `LakeFSFileSystem.open()`.

### What did you expect to happen?

I expected something like `PermissionError: cannot write to protected branch 'main'`, but the branch name would probably be sugar on top in our exception facility. There have been a few instances where I wanted more detail from lakeFS exceptions, but some (or all) of it is just the scarcity of info you get from the server.

### lakeFS-spec version

0.11.0

### lakeFS version

1.42.0

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。