`older_than` reads a naive datetime as UTC and expires snapshots it should keep
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 72/100
Direção de pesquisa
Comece em older_than e acompanhe como o limite é convertido com datetime_to_millis; o reprodutor da issue mostra o resultado incorreto para um datetime local naive. Confira os testes de expiração existentes e adicione um caso usando um fuso horário diferente de UTC junto com o reprodutor fornecido. O trabalho estará concluído quando limites locais naive preservarem os snapshots esperados a leste e a oeste de UTC, enquanto datetimes aware continuarem funcionando.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Apache Iceberg version
0.12.0 (latest release)
Please describe the bug 🐞
Currently, older_than converts its cutoff with datetime_to_millis, which takes a naive datetime as UTC, so in Tokyo the docs' older_than(datetime.now() - timedelta(days=3)) keeps only 63 hours of snapshots. An aware datetime is read correctly.
import os, time, tempfile
os.environ["TZ"] = "Asia/Tokyo" # UTC+9, any zone east of UTC does it
time.tzset()
from datetime import datetime, timedelta
import pyarrow as pa
from pyiceberg.catalog.sql import SqlCatalog
cat = SqlCatalog("c", uri="sqlite:///:memory:", warehouse=f"file://{tempfile.mkdtemp()}")
cat.create_namespace("ns")
t = cat.create_table("ns.t", schema=pa.schema([("x", pa.int64())]))
for x in (1, 2, 3):
t.append(pa.table({"x": [x]}))
t.maintenance.expire_snapshots().older_than(datetime.now() - timedelta(hours=1)).commit()
print(len(cat.load_table("ns.t").snapshots()))
# 1, should be 3
# all three snapshots are seconds old, so none is older than an hour
West of UTC the cutoff lands early instead, so it keeps snapshots it should expire.
tested on pyiceberg 0.12.0 and main
Willingness to contribute
- I can contribute a fix for this bug independently
- I would be willing to contribute a fix for this bug with guidance from the Iceberg community
- I cannot contribute a fix for this bug at this time
- Linguagem predominante
- Python
- Estrelas
- 1.2k
- Forks
- 654
- Merge médio
- 2d 11h
- PRs com merge (30d)
- 122
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Sem guia de contribuição
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-python
-
`inspect.files()` and the other file metadata tables raise `ArrowInvalid` when a snapshot has no manifestsTalvez já em andamento @YuangGao assumiu há 10 dias. Abertakind:bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
apache/iceberg-python#4269 ·
Mantenedores costumam responder em até 1 dia
-
`inspect.entries()` raises TypeError when a data file has no column_sizesTalvez já em andamento @Rahul-cs50 assumiu há 14 dias. Abertakind:bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
apache/iceberg-python#4186 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
REST: Send empty first-page pageToken when rest-page-size is setTalvez já em andamento @ehddnr301 assumiu há 32 dias. Abertakind:bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
apache/iceberg-python#4096 ·
Mantenedores costumam responder em até 1 dia
-
PyArrowFileIO: every small S3 write is a 3-request multipart upload; expose allow_delayed_openTalvez já em andamento @David-Banquet assumiu há 29 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
apache/iceberg-python#4093 · 3 comentários ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
apache/iceberg-python#4010 · 4 comentários · 1 reação ·
Mantenedores costumam responder em até 1 dia
Todas as issues de apache/iceberg-python
Issues semelhantes
-
Unknown stop ID in slow zone data crashes post formatting and skips the rest of that day's postsAbertabackend bug tm-new-volunteer
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
transitmatters/mbta-slow-zone-bot#81 · 1 comentário ·
-
area:schema documentation
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
risk:high type:ci
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100
spacetelescope/rdmt-spire#49 ·
Mantenedores costumam responder em até 1 dia