You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,13 +7,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
8
8
## [Unreleased]
9
9
10
+
### Added
11
+
12
+
-**Lock-Denied Polling**: Implemented intelligent lock polling for `lock-denied` and `in-use` errors. Lock operations now use fixed 1-second polling intervals (instead of exponential backoff) and respect `LockReleaseTimeout` (default 120s) instead of `MaxRetries`. This provides much better lock acquisition behavior when datastores are temporarily locked by other sessions.
13
+
10
14
### Changed
11
15
12
16
-**Serialization**: All operations now use exclusive locks instead of read locks. Operations on the same client connection are fully serialized to prevent write interleaving and simplify reconnection logic.
17
+
-**Lock Timeout Behavior**: Lock-denied errors now poll for up to `LockReleaseTimeout` duration with 1-second intervals, ignoring `MaxRetries` configuration. Returns `ErrLockReleaseTimeout` when timeout is exceeded.
18
+
-**Transport Error Priority**: Transport errors (connection failures) are now handled before lock polling to ensure reconnection happens first when both error types occur simultaneously.
13
19
14
20
### Fixed
15
21
16
22
-**EOF Handling**: Treat `io.EOF` errors as transient and trigger automatic reconnection. This handles scenarios where network devices close idle connections (session timeouts, device restarts), improving reliability for long-running applications and idle connection scenarios.
23
+
-**Lock Polling Implementation**: Fixed `LockReleaseTimeout` option which was defined but not implemented. Lock-denied errors previously used standard exponential backoff and gave up after ~7-8 seconds (3 retries). Now correctly polls for configured timeout duration (default 120s).
24
+
-**Context Cancellation in Lock Polling**: Added defensive context cancellation check at the start of lock polling to respect context deadlines more precisely.
0 commit comments