From ab3d1dd7e50eaff59c39c327493e1d1eac83bcc1 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 18 May 2026 20:02:35 -0400 Subject: [PATCH 1/2] fix(quartz/sqlite): set busy_timeout to deflake reader+writer races MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Without busy_timeout SQLite returns SQLITE_BUSY immediately when BEGIN IMMEDIATE can't acquire a lock — e.g. during a WAL auto-checkpoint or a reader briefly upgrading its snapshot — instead of retrying. ParallelInsertTest's reader+writer test hit this ~10% of runs. 5s matches Room's default and adds no overhead in the uncontended case. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../quartz/nip01Core/store/sqlite/SQLiteEventStore.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/store/sqlite/SQLiteEventStore.kt b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/store/sqlite/SQLiteEventStore.kt index ddd98ef7b1..e67f7b4646 100644 --- a/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/store/sqlite/SQLiteEventStore.kt +++ b/quartz/src/commonMain/kotlin/com/vitorpamplona/quartz/nip01Core/store/sqlite/SQLiteEventStore.kt @@ -106,6 +106,13 @@ class SQLiteEventStore( // The DB can be corrupted if the OS shuts down before // sync, which generally doesn't happen on Android. db.execSQL("PRAGMA synchronous = OFF;") + + // Without busy_timeout, BEGIN IMMEDIATE returns SQLITE_BUSY + // the instant another connection holds a conflicting lock — + // e.g. a WAL auto-checkpoint or a reader transiently + // upgrading its snapshot. With it, SQLite retries internally + // for up to N ms before giving up. Matches Room's default. + db.execSQL("PRAGMA busy_timeout = 5000;") }, onMigrate = { db -> val currentVersion = getUserVersion(db) From e1e185a6f2dbe23340cb7ed03988c25e5918c614 Mon Sep 17 00:00:00 2001 From: Crowdin Bot Date: Tue, 19 May 2026 13:26:50 +0000 Subject: [PATCH 2/2] New Crowdin translations by GitHub Action --- .../src/main/res/values-hu-rHU/strings.xml | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/amethyst/src/main/res/values-hu-rHU/strings.xml b/amethyst/src/main/res/values-hu-rHU/strings.xml index ead3571b70..d6ff64989b 100644 --- a/amethyst/src/main/res/values-hu-rHU/strings.xml +++ b/amethyst/src/main/res/values-hu-rHU/strings.xml @@ -8,6 +8,7 @@ Megjelenítés mindenképp Ez a bejegyzés el lett rejtve, mert az Ön rejtett felhasználóit vagy szavait említi A bejegyzés el lett némítva vagy be lett jelentve általa: + Ez a bejegyzés több mint %1$d kulcsszót tartalmaz Az esemény épp betöltődik vagy nem található az átjátszólistában 👀 Csatorna profilképe @@ -1383,6 +1384,7 @@ Mikor töltse be a képeket Köteg másolása Másolás a vágólapra + Vágólapra másolva nprofile-kulcs vágólapra másolása Npub másolása a vágólapra Megosztás vagy mentés @@ -1486,9 +1488,17 @@ Nem sikerült Lightning-számlát létrehozni a következőből: %1$s: A „PR” elem nem található a kapott JSON-ban. Csak olvasható felhasználó Nincs reakcióbeállítás + Értesítések + Kézbesítés + Alkalmazáson belüli megjelenítés + Kategóriák + Koppintson egy kategóriára, hogy megnyissa az ahhoz tartozó Android értesítési beállításokat – itt találhatók a hang-, a fontossági-, az értesítési jelölők- és a „Ne zavarjanak” beállítások. + Be + Néma + Ki UnifiedPush-alkalmazás kiválasztása - Push-értesítés - A telepített UnifiedPush-alkalmazásokból + Push-szolgáltató + Válasszon egy UnifiedPush alkalmazást, amely értesítéseket küld, ha az Amethyst be van zárva. Nincs Push-értesítések letiltása A következő alkalmazást használja: %1$s @@ -2605,4 +2615,13 @@ Ön nem felel meg a közösség bizalmi hálóra (Web-of-Trust) vonatkozó követelményeinek. A legfrissebb közösségi szabálydokumentum elavultként el lett utasítva. + Nowhere webhely + Nowhere esemény + Nowhere adománygyűjtés + Nowhere bolt + Nowhere petíció + Nowhere üzenet + Nowhere drop + Nowhere alkotás + Nowhere fórum