deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Dynoxide 1.4.0, gömülü sunucuda zarif kapanma ve JSON Lines içe aktarımı getiriyor

Dynoxide 1.4.0, .jsonl içe aktarma desteği, gömülü HTTP sunucusu için zarif kapanma API'si ve güncelleme, scan ve query davranışlarında DynamoDB uyumluluğunu artıran bir dizi düzeltmeyi içeriyor.

Dynoxide 1.4.0, gömülü sunucuda zarif kapanma ve JSON Lines içe aktarımı getiriyor

Dynoxide, yerel olarak DynamoDB uyumlu bir sunucu çalıştırmaya yarayan bir araç, 1.4.0 sürümünü yayımladı. dev.to'daki sürüm notlarına göre bu, 1.3.0'dan daha küçük bir sürüm; import komutuna yapılan bir topluluk katkısı, gömülü HTTP sunucusu için zarif durdurma mekanizması ve update ile scan davranışlarını gerçek DynamoDB'ye yaklaştıran bir tur düzeltmeyi bir araya getiriyor.

JSON Lines içe aktarımı

import komutu, Sam Chung'un katkısıyla JSON Lines dosyaları desteği kazandı. Sürüm notlarında anlatıldığı gibi Chung, import'u test ederken aracın tüketttiği .json dosyalarının aslında sıradan JSON değil JSON Lines olduğunu fark etmiş, editörlerin bunları düzgün işlemesi için .jsonl olarak yeniden adlandırmış ve ardından bu uzantıyı Dynoxide'un kendisine bağlamış.

dynoxide import artık mevcut .json ve .json.gz dosyalarının yanında .jsonl ve .jsonl.gz dosyalarını da kabul ediyor. Dosyalar ya bir DynamoDB export düzeninde — her tablo için bir klasör ve onun içinde bir data alt klasörü barındıran bir dizin — ya da düz bir dizinde birlikte yer alacak şekilde düzenlenebilir.

Gömülü sunucular için zarif kapanma

Dynoxide'un HTTP sunucusunu kendi Rust kodlarının içinde çalıştıran geliştiriciler için sunucuyu durdurmak daha önce alttaki task'i iptal etmek anlamına geliyordu. Sürüm notları zincirleme etkiyi şöyle açıklıyor: bağlantı task'leri veritabanı üzerindeki tutuşlarını koruyordu, bu yüzden dosya tabanlı bir veritabanının dosyaları açık kalıyordu — ve Windows açık olan bir dosyayı silmez, bu da test temizliğini zorlaştırıyordu.

dynoxide-rs 3.1.0, durdurma sinyali görevi gören bir future alan server::serve_with_shutdown fonksiyonunu tanıtıyor. Bu future çözümlendiğinde sunucu yeni bağlantıları kabul etmeyi bırakıyor, boşta olan keep-alive bağlantılarını kapatıyor, devam eden isteklerin bitmesini bekliyor ve sonra geri dönüyor. Dokümantasyondaki bir uyarı: son bağlantı, çağrı geri döndükten kısa bir süre sonra veritabanını bırakabilir, dolayısıyla dosya silme işlemi kısa bir retry döngüsü gerektirebilir. dynoxide start komutu artık aynı mekanizma üzerine inşa edildi; Ctrl-C ve SIGTERM eskisi gibi çalışıyor.

Update ve scan için uyumluluk düzeltmeleri

Kalan işlerin çoğu UpdateItem, PartiQL UPDATE, Scan ve Query doğruluğunu hedefliyor. Bir testte en çok yüzeye çıkma ihtimali olan değişiklikler:

  • Bir update yolu artık üst özniteliğinin var olmasını gerektiriyor. Daha önce yol ortasında bir ara öznitelik oluşturan bir PartiQL SET artık reddediliyor, çünkü DynamoDB de bunu reddediyor.

  • Bir ifadedeki tüm yan tümceler ögenin özgün durumuna göre değerlendiriliyor; böylece tek bir REMOVE iki liste elemanını silebiliyor ve aynı ifadede atanmış bir özniteliği okuyan SET hâlâ eski değeri görüyor.

  • Eksik bir öznitelik artık sıfır gibi ele alınmıyor. Olmayan ya da yanlış tipteki bir operand üzerinde aritmetik işlem ve list_append artık DynamoDB'nin hatasını döndürüyor.

Scan doğrulaması da daha yeni DynamoDB davranışıyla hizalandı. Yazar, ilk kez Haziran'da fark edilen AWS tarafındaki doğrulama dağıtımının 33 AWS bölgesinden 20'sine ulaştığını ve Dynoxide'un Scan'inin artık yeni hata sıralamasını ve ifadelerini izlediğini belirtiyor (issue #254).

Yanlış sonuç döndüren iki paralel scan hatası düzeltildi. TotalSegments 4.096'nın üzerindeyken son hash bucket'ının ötesindeki segmentler neredeyse her ögeyi döndürüyordu; artık her öge yalnızca bir kez geri geliyor. Ayrıca ilerlerken her sayfayı silen bir scan, başlangıç anahtarı ögesi silindiğinde LastEvaluatedKey'i olmayan boş bir sayfa alabiliyordu; artık kendi segmentinin tamamını görüyor.

Sürüm ayrıca yayımlanan güvenlik bildirimlerine yanıt olarak rustls ve rustls-webpki paketlerini yükseltiyor; ancak notlara göre bunlar Dynoxide'a yalnızca test bağımlılıkları üzerinden ulaşıyor, dolayısıyla yayımlanan hiçbir şey etkilenmiyor.

Yükseltmeden önce kontrol edilecekler

Rust API'si artık girdiyi HTTP API'siyle aynı şekilde doğruluyor. Database::scan ve Database::query 0 değerinde bir Limit'i reddediyor; scan ise aralık dışı Select, ReturnConsumedCapacity ve Segment değerlerini reddediyor. Boş bir UpdateExpression artık aynı mesajla ValidationException yerine DynoxideError::EnvelopedValidation olarak ortaya çıkıyor. dynoxide mcp komutu başlangıçta --max-items 0 değerini reddediyor ve scan ile query araçları 0 değerindeki bir limit'i reddediyor.

Sürüm ayrışmasına dikkat: crate 3.1.0 iken ürün sürümü 1.4.0. Rust kullanıcılarının yeni kapanma fonksiyonunu edinmek için dynoxide-rs = "3.1" gerekir; npm projeleri ise sürümü npm install --save-dev [email protected] ile sabitleyebilir.

Neden önemli

Yerel DynamoDB emülasyonu uyumluluk üzerinde yaşıyor ya da ölüyor: bir emülatöre karşı geçen ama gerçek servise karşı başarısız olan testler — ya da tersi — ekiplere gerçek hata ayıklama zamanı kaybettiriyor. Bu sürüm, geliştiricilerin sürekli karşılaştığı alanlarda, update ifadelerinden paralel scan'lere ve sayfalama uç durumlarına kadar bir dizi davranış boşluğunu kapatıyor. Zarif kapanma API'si, testlerde gömülü sunucular çalıştıran ve Windows'ta артaya kalan dosya tutamaçlarının temizliği engelleyebildiği Rust kullanıcıları için pratik bir sorunu çözüyor. Ve topluluk katkısıyla gelen .jsonl desteği, DynamoDB export'larını içe aktaran herkes için küçük ama tekrarlayan bir sürtünme noktasını ortadan kaldırıyor.

  • #dynamodb
  • #rust
  • #local-testing
  • #open-source
  • #developer-tools

İlgili yazılar