Comments (7)
from elle.
Sorry, maybe I didn't describe it clearly. What I want to construct is a lost-update anomaly.
Suppose the 3 transactions as t1, t2 t3. I set t3 start only after t1 and t2 commit., soe have the execution satisfies
commitTs(t1) < startTs(t3)
commitTs(t2) < startTs(t3)
The full history is here
{:process 0, :f :txn, :part true, :value [[:start-txn nil true] [:r 0 0]], :time 216149557, :type :ok, :index 15}
{:process 1, :f :txn, :part true, :value [[:start-txn nil true] [:w 0 2]], :time 241574330, :type :ok, :index 24}
{:process 1, :f :txn, :part true, :value [[:commit-txn nil true]], :time 1255571934, :type :ok, :index 46}
{:process 0, :f :txn, :part true, :value [[:w 0 1] [:commit-txn nil true]], :time 1273574209, :type :ok, :index 60}
{:process 3, :f :txn, :part false, :value [[:r 0 1]], :time 1283358766, :type :ok, :index 68}
It is right that one valid serializable schedule is <t1, t3, t2>, but t3 happens last actually.
It's like both t1 and t2 execute in the morning and t3 execute in the evening.
We only consider t1 and t2.
- If t1 happens before t2, we should read 2 in t3.
- if t2 happens before t1, we should read 2 in t1.
So the execution is neither <t1, t2, t3> nor <t2, t1, t3>.
It is an anomaly, but it is really hard to describe.
from elle.
This history is still serializable though. That's what serializability means--equivalence to some ordering of transactions.
from elle.
Thanks, I will close this issue.
from elle.
If you're asking if it's strict serializable... the answer is no, and Elle should, I think be able to detect this. Did you try it?
from elle.
I will take a try, thank you very much.
from elle.
(Whether it can detect a realtime violation with a read-write register might depend on the strength of the per-key version order inference; I'm not sure off the top of my head whether a linearizable-key or WFR assumption is sufficient here. Should definitely work with a list-append workload though!)
from elle.
Related Issues (17)
- Example for running test-cases with Elle? HOT 1
- Build fails with `lein check` HOT 4
- Elle checks :fail results? HOT 1
- The rw-register checker succeeds on the history: wx1, rx2.
- Feature: add delete operation HOT 2
- Publish jar files for each release HOT 10
- Could Elle tell the difference between snapshot isolation and strong-session-snapshot-isolation? HOT 7
- Example with list-append history is broken in 0.1.6 HOT 1
- Elle couldn't check list-append example described in a paper HOT 2
- Elle may miss two types of transaction anomalies: HOT 4
- list-append/sorted-values might be broken with history object HOT 3
- Is there any example on how to use the gen function? HOT 2
- PL-2L(monotonic-view) G-monotonic: experiment with adding the anomaly HOT 2
- Cannot run on the latest version of Clojure on Ubuntu 22.04: reducers.clj is not found HOT 8
- Modeling linearizable keys with the list-append workload HOT 7
- False positive on lost update HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from elle.