Details
-
Bug
-
Resolution: Fixed
-
Major
-
None
-
None
-
None
-
0
Description
Couchbase Server resposne to transaction cleanup request with "DurabilityInvalidLevel." Accoridng to Jim, this means the client encoded the durability level as outside the range [1,3] or specified an invalid timeout.
The following log message shoes the durability was represented as `durability=Optional[NONE]` instead of `durability=Optional.empty()`.
MemcacheProtocol.mutationFlexibleExtras() doesn't expect this – it only checks for empty optional, and is probably encoding `0` as the durability level, which the server rejects.
We could take a few different approaches. Simplest might be to add a check for `durability=Optional[NONE]` in mutationFlexibleExtras(), and treat it the same as Optional.empty().
Another possible solution would be to re-evaluate whether we need an Optional at all – maybe DurabilityLevel.NONE is sufficient to indicate an absence of synchronous durability requirement. Might need to see how this interacts with legacy durability (persistTo, replicateTo).
Attachments
Issue Links
- is duplicated by
-
JVMCBC-1296 InvalidDurability raised if durability.NONE used with transactions
- Closed