Retry Behavior for SigV4Adapter in REST Catalog
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 55/100
Piste de recherche
Comparez la configuration des nouvelles tentatives de GlueCatalog dans pyiceberg/catalog/glue.py#L331-L348 avec celle de REST SigV4Adapter dans pyiceberg/catalog/rest/init.py#L684-L694, puis consultez les recommandations de botocore concernant les nouvelles tentatives, liées dans l’issue. Vérifiez comment une session botocore personnalisée est fournie via les propriétés du catalogue. Le travail est considéré comme terminé lorsque les requêtes REST disposent d’une politique de nouvelles tentatives par défaut sûre et convenue, et que le comportement est cohérent avec Glue en cas de throttling et de workloads parallèles.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Feature Request / Improvement
Hi team,
I’ve recently migrated to AWS S3 Tables and switched from using the GlueCatalog to the REST catalog. After updating the catalog configuration, everything works correctly in local, single‑process scenarios. However, I’m encountering intermittent failures when scaling out to multiple Dask workers making parallel requests.
Specifically, I’m seeing occasional ThrottlingException errors coming from AWS SigV4‑signed requests. Once throttling occurs, subsequent requests sometimes fail with:
requests.exceptions.HTTPError: 403 Client Error
My understanding is that throttled SigV4 signing attempts can lead to follow‑on request failures, resulting in unauthorized S3 operations. According to AWS’s recommendation for handling throttling on signed requests, retry configuration should be applied via botocore: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/retries.html
While reviewing the PyIceberg implementation, I noticed:
- The GlueCatalog sets reasonable default retry settings on the underlying boto session: https://github.com/apache/iceberg-python/blob/main/pyiceberg/catalog/glue.py#L331-L348
- The REST catalog, and specifically the SigV4Adapter, does not appear to configure any retry behavior by default: https://github.com/apache/iceberg-python/blob/main/pyiceberg/catalog/rest/__init__.py#L684-L694
This creates an inconsistency where switching from Glue to REST results in weaker retry behavior, which becomes visible under parallel load.
Question / Proposal
Should the REST catalog align its default retry behavior with what GlueCatalog already applies?
At present, users can manually configure retry settings by supplying a custom botocore session via catalog properties, but I am yet to test if this works. It seems reasonable and more consistent for the REST catalog to provide safe defaults, especially since SigV4Adapter is now a common path for AWS S3 Tables.
Matching (or at least approaching) the GlueCatalog’s retry policy would provide the following benefits:
- Avoid intermittent throttling‑triggered failures in distributed workloads
- Improve parity between Glue and REST behavior
- Reduce the configuration burden on users switching to REST for AWS‑backed tables
Happy to discuss or test any proposed changes. Thanks for your work on the project!
- Langage dominant
- Python
- Étoiles
- 1.1k
- Forks
- 606
- Merge moyen
- 1 j 11 h
- PR mergées (30 j)
- 75
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de apache/iceberg-python
-
View does not expose metadata_location: RestCatalog.load_view discards it from the server's responsePeut-être pris @Soumo-git-hub l’a pris il y a 1 jour. Ouvertekind:bug
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
apache/iceberg-python#4073 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
apache/iceberg-python#4010 · 3 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
to_bytes silently rescales a Decimal with a negative scalePeut-être pris @Rodrigo-Palma l’a pris il y a 18 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/iceberg-python#3996 ·
Les mainteneurs répondent en général sous 1 jour
-
Deletion vector bitmap count is read from the blob and used as a loop bound without validationPeut-être pris @ghoshp83 l’a pris il y a 18 jours. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
apache/iceberg-python#3979 ·
Les mainteneurs répondent en général sous 1 jour
-
FsspecFileIO: `_adls` mutates shared properties, so a second storage account gets the first account's filesystemPeut-être pris @krishnakaanchan-png l’a pris il y a 35 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/iceberg-python#3885 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de apache/iceberg-python
Issues similaires
-
needs-human needs-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
gke-labs/kube-agents#2400 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Device Details tables: FS/SF columns contradict each other (nfet_01v8 Vt row, pfet_01v8 Idsat row)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
google/skywater-pdk#450 ·
-
Drained trajectory arrays are overwritten when the sequence buffer is reusedPeut-être pris @sylvesterkaczmarek l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
google-deepmind/bsuite#56 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
LearningCircuit/local-deep-research#7206 ·
Les mainteneurs répondent en général sous 1 jour
-
[TASK] Document technology stackOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
chingu-voyages/V62-tier3-team-33#285 ·
Les mainteneurs répondent en général sous 1 jour