Make RestCatalog safe to share across threads
Mantenedores costumam responder em até 2 dias
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 25/100
Direção de pesquisa
Read src/iceberg/catalog/rest/rest_catalog.cc around AsCatalog() at lines 565–573, then inspect the HttpClient path and the linked issue #1089 to understand the shared request state. Make the default catalog cache safe for concurrent access and confirm the linked HTTP client work supports sharing; done means concurrent catalog use has no data race. An open pull request, #1092, is already linked.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Currently, RestCatalog doesn't document whether one instance can be shared between threads. Query engines usually share one catalog across concurrent queries (for example Spark within a session, Trino, and DuckDB), and iceberg-rust requires catalogs to be Send + Sync (code).
Without that guarantee, an embedder has to serialize every catalog call behind its own lock. That costs throughput, and one hung request then blocks every other caller. In https://github.com/smaheshwar-pltr/duckdb-proto-iceberg, we observed that making a catalog-heavy test about 4x slower.
RestCatalog is close to thread-safe already. After Make(), the only state it changes is the default catalog that AsCatalog() caches in a weak_ptr. It reads and writes that cache without a lock, so concurrent AsCatalog() calls race (rest_catalog.cc#L565-L573).
Note: sharing a catalog also depends on https://github.com/apache/iceberg-cpp/issues/1089, because every request goes through one HttpClient.
- Linguagem predominante
- C++
- Estrelas
- 227
- Forks
- 142
- Merge médio
- 3d 21min
- PRs com merge (30d)
- 70
Preparar o ambiente
Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.
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 apache/iceberg-cpp
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 77/100
apache/iceberg-cpp#1103 ·
Mantenedores costumam responder em até 2 dias
-
help wanted
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
apache/iceberg-cpp#1101 ·
Mantenedores costumam responder em até 2 dias
-
Support Iceberg SQL viewsAberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 25/100
apache/iceberg-cpp#1099 ·
Mantenedores costumam responder em até 2 dias
-
Complete OAuth2 token refresh and expiration support (Java-compatible)Talvez já em andamento @lishuxu assumiu há 2 dias. Aberta
apache/iceberg-cpp#1095 · 2 comentários · 1 responsável ·
Mantenedores costumam responder em até 2 dias
-
RestCatalog: concurrent HTTP requests can crash in libcurlTalvez já em andamento @smaheshwar-pltr assumiu há 3 dias. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 20/100
apache/iceberg-cpp#1089 ·
Mantenedores costumam responder em até 2 dias
Todas as issues de apache/iceberg-cpp
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
Mantenedores costumam responder em até 2 dias
-
ai_p2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
ClickHouse/ClickHouse#130006 ·
Mantenedores costumam responder em até 1 dia
-
RebuildGeom rebuilds vertex buffers needlesslyTalvez já em andamento @trish-sl assumiu hoje. Abertatriage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
secondlife/viewer#6653 ·
Mantenedores costumam responder em até 1 dia
-
DepotMaintain: EN longer string moves the hint popup buttons out of reach // WpfGUI English LanguageAbertaclient: WpfGui module: depot question
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
MaaAssistantArknights/MaaAssistantArknights#19169 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Spark: arrays_overlap returns false for -0.0 and 0.0, Spark returns true since 4.0.5 / 4.1.4 / 4.2.0Talvez já em andamento @rdtr assumiu hoje. Abertabug triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
facebookincubator/velox#20179 ·
Mantenedores costumam responder em até 1 dia