[GH-ISSUE #10] Synchronize queued positions and protect destination changes #11

Open
opened 2026-10-23 18:09:15 +02:00 by jayanezj · 0 comments
Owner

Originally created by @jayanezj on GitHub (Oct 23, 2026).
Original GitHub issue: https://github.com/jayanezj/traccar-client-macos/issues/10

Goal

Recover buffered tracking positions without request storms, cross-device attribution or unintended sends while paused.

Scope

  • Upload in stable queue order with controlled sequential requests and backoff starting at 5 seconds, doubling to a maximum of 5 minutes. Reset backoff after success.
  • Remove a specific position only after HTTP 2xx or approved retention/capacity discard. Document handling of permanent rejection without silent data loss or a tight retry loop.
  • Stop automatic uploads/retries when explicitly paused. Cancel in-flight work where possible; do not claim cancellation retracts a position already accepted by a server.
  • Pause before changing destination or device identifier. With pending positions, offer Cancel change or Discard pending positions and apply, with explicit discard confirmation. Without pending positions, apply and remain paused.
  • Never reassign old positions to a new destination/identity, including a newly generated identifier. Keep one active configuration for the prototype.

Acceptance criteria

  • Offline/reconnect, transient failure and successful recovery preserve ordering and respect backoff.
  • Non-2xx does not delete a position or update the last accepted-send status.
  • Pause and destination changes cannot race into a request using the wrong configuration.
  • Cancel preserves pending data/configuration; confirmed discard applies the new configuration and remains paused.
  • Clearing the queue during an upload cannot cause an unrelated row to be removed.
  • Documentation acknowledges possible duplicate delivery when acceptance occurs but the response is lost; no exactly-once guarantee is made.

Validation

Use the local receiver and controlled timing, including restart mid-failure. Do not modify external server configuration or test against real device history automatically.

Add or extend this feature's meaningful deterministic tests in the CI workflow from PROTO-002 as part of the same implementation, without waiting for the final milestone. Keep physical-Mac checks explicitly manual.

References

Pinned official source references for implementation comparison; mobile APIs are not assumed available on macOS.

Dependencies

Originally created by @jayanezj on GitHub (Oct 23, 2026). Original GitHub issue: https://github.com/jayanezj/traccar-client-macos/issues/10 ## Goal Recover buffered tracking positions without request storms, cross-device attribution or unintended sends while paused. ## Scope - Upload in stable queue order with controlled sequential requests and backoff starting at 5 seconds, doubling to a maximum of 5 minutes. Reset backoff after success. - Remove a specific position only after HTTP 2xx or approved retention/capacity discard. Document handling of permanent rejection without silent data loss or a tight retry loop. - Stop automatic uploads/retries when explicitly paused. Cancel in-flight work where possible; do not claim cancellation retracts a position already accepted by a server. - Pause before changing destination or device identifier. With pending positions, offer Cancel change or Discard pending positions and apply, with explicit discard confirmation. Without pending positions, apply and remain paused. - Never reassign old positions to a new destination/identity, including a newly generated identifier. Keep one active configuration for the prototype. ## Acceptance criteria - [ ] Offline/reconnect, transient failure and successful recovery preserve ordering and respect backoff. - [ ] Non-2xx does not delete a position or update the last accepted-send status. - [ ] Pause and destination changes cannot race into a request using the wrong configuration. - [ ] Cancel preserves pending data/configuration; confirmed discard applies the new configuration and remains paused. - [ ] Clearing the queue during an upload cannot cause an unrelated row to be removed. - [ ] Documentation acknowledges possible duplicate delivery when acceptance occurs but the response is lost; no exactly-once guarantee is made. ## Validation Use the local receiver and controlled timing, including restart mid-failure. Do not modify external server configuration or test against real device history automatically. Add or extend this feature's meaningful deterministic tests in the CI workflow from [PROTO-002](https://github.com/jayanezj/traccar-client-macos/issues/2) as part of the same implementation, without waiting for the final milestone. Keep physical-Mac checks explicitly manual. ## References Pinned official source references for implementation comparison; mobile APIs are not assumed available on macOS. - [Official source 1](https://github.com/traccar/traccar-client-sdk/blob/a297767642e98193eb7939cbb4d54c101ff23610/core/src/commonMain/kotlin/org/traccar/client/TrackerEngine.kt) ## Dependencies - [PROTO-006](https://github.com/jayanezj/traccar-client-macos/issues/6) - [PROTO-008](https://github.com/jayanezj/traccar-client-macos/issues/8) - [PROTO-009](https://github.com/jayanezj/traccar-client-macos/issues/9) <!-- planning-id: PROTO-010 -->
jayanezj added this to the M4 - Reliable tracking and persistence milestone 2026-10-23 18:09:15 +02:00
jayanezj added the type:featurepriority:higharea:transport labels 2026-10-23 18:09:15 +02:00
jayanezj added type:featurearea:transport and removed type:featurearea:transport labels 2026-10-30 18:01:10 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jayanezj/traccar-client-macos#11