Skip to content

fix(sync): finish the sync when a store refuses an upload - #1828

Merged
A-EDev merged 2 commits into
mainfrom
fix/sync2-upload-refusal
Nov 7, 2026
Merged

A-EDev merged 2 commits into
mainfrom
fix/sync2-upload-refusal

Conversation

@A-EDev

@A-EDev A-EDev commented Nov 7, 2026

Copy link
Copy Markdown
Collaborator

Summary

A store refusing one of this device's objects ended the sync with an exception. Now the upload stops at that object, keeping the log in order, since skipping it would leave a gap other devices wait at. Pages already sent are saved, the rest of the sync finishes, and the refusal reaches the user through the existing last-sync error. A refused login still ends the sync at once.

Related issue

None.

Change type

  • Bug fix
  • Feature
  • Refactor or maintenance
  • Build, packaging, or CI
  • Documentation

Validation

  • ./gradlew --offline ... :app:testGithubDebugUnitTest --tests 'io.github.aedev.flow.sync2.*': 305 tests, 16 failed, all in LinkedProfilesTest with mockk's Could not self-attach to current VM from this machine's sandbox. CI runs that class.

  • ./gradlew --offline ... ktlintCheck: passed.

  • python3 .github/scripts/nightly_notes.py --check: passed.

  • New UploadRefusalTest: 4 passed. With the upload made to skip the refused object instead, 3 of the 4 fail.

  • The call in LinkedSync.run has no test of its own: its constructor needs most of the app.

  • ./gradlew :app:assembleGithubDebug: not run locally, CI builds it.

  • ./gradlew :app:testGithubDebugUnitTest: full suite not run locally, CI runs it.

  • I manually tested the affected behavior on an Android device or emulator: not done.

Test device and Android version: none.

Risk and compatibility

Background sync only. An object that stays refused keeps this device's later objects from going out, as before, and the error stays visible until the store takes it.

  • The change does not introduce secrets, private data, or unexpected telemetry.
  • New user-facing text uses Android string resources, or this PR adds none.
  • Dependency and lockfile changes are intentional and limited to this PR. There are none.
  • Room schema changes include the required version bump and migration, or this PR does not change the Room schema.
  • Breaking changes and upgrade steps are clearly documented. There are none.

Copilot AI balanced review requested due to automatic review settings November 7, 2026 13:49

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Nov 7, 2026
@A-EDev
A-EDev merged commit ef010e6 into main Nov 7, 2026
9 checks passed
@A-EDev
A-EDev deleted the fix/sync2-upload-refusal branch November 7, 2026 22:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants