aai-institute / aai-institute/lakefs-spec

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

Aberta
#296 1 comentário 0 reações 0 responsáveis Ver no GitHub
bug triage
Linguagem predominante
Python
Estrelas
65
Forks
7
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

### 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

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.