Skip to content

test(nomerge): add porcupine linearizability test#263

Open
jmasters-git wants to merge 1 commit intobytedance:mainfrom
jmasters-git:issue/skipmap-linearizability-failure
Open

test(nomerge): add porcupine linearizability test#263
jmasters-git wants to merge 1 commit intobytedance:mainfrom
jmasters-git:issue/skipmap-linearizability-failure

Conversation

@jmasters-git
Copy link

This Pull Request is for demonstrating a skipmap linearizability failure. See reported issue.

Screenshot 2026-03-18 at 5 22 37 pm


Observed timeline

LoadAndDelete(key_0) -> 700091   [deletes the old value]
Store(key_0, 200019)             [concurrent, should install new value]
LoadAndDelete(key_0) -> nil      [value from Store is gone]

There is no valid linearization of these operations: if Store(key_0, 200019) linearizes after the first LoadAndDelete, the key should hold 200019. The second LoadAndDelete returning nil means the Store's effect was lost without any corresponding delete.

Add a per-key linearizability test for StringMap using the porcupine checker. The test runs 16 concurrent clients performing a uniform mix of Load, LoadOrStore, Store, and LoadAndDelete on a shared key set and verifies that all observed histories are linearizable.

The test surfaces a lost-Store bug: when Store races with LoadAndDelete, the stored value can silently disappear.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant