עדכון ספרייה: אימות חלקי לפי טבלאות ובדיקת שאר הספרייה אחרי ה-commit - #1207
Merged
Merged
Conversation
This was referenced Sep 7, 2026
palmoni5
force-pushed
the
feat/per-table-verify
branch
from
September 7, 2026 13:50
7d219e8 to
f08a5d3
Compare
כשהמניפסט נושא hash לכל טבלה, ה-updater מאמת בתוך ה-transaction רק את הטבלאות שה-patch יכול היה לשנות, ולכן שלב 'מאמת את הספרייה המעודכנת' מתקצר מדקות לשניות. הטבלאות שאף צעד בשרשרת לא נגע בהן נבדקות אחרי שהשרשרת נשמרה וחיבור ה-RO נפתח מחדש — מעבר קריאה-בלבד ב-isolate, בלי תור פעולות, בשלב 'verifyDeferred' ('בודק את שאר הספרייה (ניתן להמשיך לקרוא)').
סטייה שמתגלית בבדיקה הזו אינה rollback: העדכון תקין לטבלאות שנגע בהן. היא נרשמת ל-errors.txt ומנותבת ל-needsFullConfirmation עם LibraryMessages.libraryContentDriftAfterUpdate, תוך שימור changedBookIds לאינדוקס. כשל של הבדיקה עצמה נרשם ואינו הופך עדכון תקין לשגיאה.
רמז הבתים לכל טבלה נשמר ב-library_update_cache/verify_table_bytes.json למד ההתקדמות בריצות הבאות. מניפסט בלי מפות — התנהגות זהה לקודם.
דורש otzaria_library_updater 0.4.0 (Otzaria/otzaria_library_updater — PR מקושר) ו-SeforimLibrary עם המפות במניפסט.
Y-PLONI
force-pushed
the
feat/per-table-verify
branch
from
September 7, 2026 21:44
f08a5d3 to
ae468b2
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
מה השינוי
שלב "מאמת את הספרייה המעודכנת" בעדכון דלתא מתקצר מדקות לשניות: כשהמניפסט נושא hash לכל טבלה, ה-updater מאמת בתוך ה-transaction רק את הטבלאות שה-patch יכול היה לשנות. הטבלאות שאף צעד בשרשרת לא נגע בהן נבדקות אחרי שהשרשרת נשמרה וחיבור ה-RO נפתח מחדש — מעבר קריאה-בלבד ב-isolate, בלי תור פעולות ובלי
closeForExternalWrite, בשלב חדשverifyDeferredשמוצג כ"בודק את שאר הספרייה (ניתן להמשיך לקרוא)".LibraryUpdateRepository.applyDeltaPlan— מעבירverifyTableBytesHintלכל צעד, שומר את הבתים לכל טבלה ב-library_update_cache/verify_table_bytes.json, אוסף את חיתוךdeferredTablesשל כל הצעדים, ואחריrefreshAfterDbUpdateמריץverifyTableHashesעל החיתוך מולtoTableContentHashesשל הצעד האחרון.errors.txt(Library Update: content drift in untouched tables), וזורקתLibraryDeltaContentDriftExceptionעם תוצאת ה-apply. ה-bloc מנתב ל-needsFullConfirmationעםLibraryMessages.libraryContentDriftAfterUpdate, ושומרchangedBookIds/requiresFullIndexRefreshכך שהאינדוקס לא אובד.errors.txtואינו הופך עדכון תקין לשגיאה.PRים מקושרים (מענפים נפרדים) — סדר מיזוג
verifyTableHashes.pubspec.yamlהיאref: mainשל ה-updater, וה-API החדש (verifyTableBytesHint,deferredTables,verifyTableHashes) קיים רק שם. פותח מקומית דרךpubspec_overrides.yaml(לא בקומיט).הענף כולל גם את c891d0a ("עדכון ספרייה: רישום נסיגה מ-WAL ל-errors.txt") שהיה על בסיס ה-worktree וטרם ב-
dev.איך נבדק
test/library_update/library_update_repository_test.dart: מניפסט עם מפות → אימות חלקי, שלבverifyDeferred, קובץ הרמז נשמר; סטייה בטבלה שלא נגעו בה → חריגה אחרי ה-commit, ה-DB מעודכן, refresh נקרא, נרשם ל-errors.txt; שרשרת שבה צעד אחד בלי מפות → איןverifyDeferred; מניפסט בלי מפות → אימות מלא בלבד ואין קובץ.test/library_update/library_update_bloc_test.dart: סטייה →needsFullConfirmationעם ההודעה החדשה ו-changedBookIdsשמורים.flutter analyzeנקי;flutter test test/library_update/— 115/115.