[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tlaplus] Unknown error in my model
Hello! I was modeling a simple ETL framework we have to make sure we can never lose data.
When checking the model it prints:
悪 java -XX:+UseParallelGC -jar tla2tools.jar ETL.tla -dump dot,colorize,actionlabels ETL -workers auto
TLC2 Version 2.18 of Day Month 20?? (rev: 8a0da69)
Running breadth-first search Model-Checking with fp 22 and seed 1979252589652203881 with 24 workers on 24 cores with 7122MB heap and 64MB offheap memory [pid: 74299] (Linux 6.0.12-arch1-1 amd64, N/A 19.0.1 x86_64, MSBDiskFPSet, DiskStateQueue).
Parsing file /home/mcoll/capchase/code/client-monorepo/apps/metrics-api/models/ETL.tla
Semantic processing of module ETL
Starting... (2022-12-20 21:26:11)
Implied-temporal checking--satisfiability problem has 1 branches.
Computing initial states...
Finished computing initial states: 1 distinct state generated at 2022-12-20 21:26:11.
Error: The behavior up to this point is:
State 1: <Initial predicate>
/\ source_in = {1, 2, 3}
/\ pc_source = "consume"
/\ database = {}
/\ pc_store = "wait"
/\ item = FALSE
/\ malformed_entities = {}
/\ pc_trans = "wait"
State 2: <SourceConsume line 28, col 18 to line 34, col 77 of module ETL>
/\ source_in = {1, 3}
/\ pc_source = "yield"
/\ database = {}
/\ pc_store = "wait"
/\ item = 2
/\ malformed_entities = {}
/\ pc_trans = "trans"
State 3: <Transform line 49, col 14 to line 55, col 34 of module ETL>
/\ source_in = {1, 3}
/\ pc_source = "anext"
/\ database = {}
/\ pc_store = "wait"
/\ item = 2
/\ malformed_entities = {2}
/\ pc_trans = "wait"
52 states generated, 52 distinct states found, 19 states left on queue.
The depth of the complete state graph search is 9.
The average outdegree of the complete state graph is 2 (minimum is 1, the maximum 3 and the 95th percentile is 2).
Finished in 00s at (2022-12-20 21:26:11)
Trace exploration spec path: ./ETL_TTrace_1671567971.tla
Which doesn't give any information on what the error was, only "Error: The behavior up to this point is:"
I've rechecked my model several times and I don't know what could be causing this (truthfully, I'm very new with TLA+ so it may be just me being dumb).
Attached are my model and cfg file. I also welcome any improvements over the model if you see something that is wrong or could be done better.
Thank you!
----- ETL.tla
-------------------------------- MODULE ETL --------------------------------
CONSTANT data
VARIABLES
source_in,
database,
malformed_entities,
item,
pc_source,
pc_trans,
pc_store
vars == << source_in, database, malformed_entities, item, pc_source, pc_trans, pc_store >>
Init == /\ source_in = data
/\ database = {}
/\ malformed_entities = {}
/\ pc_source = "consume"
/\ pc_trans = "wait"
/\ pc_store = "wait"
/\ item = FALSE
SourceConsume == \E d \in source_in:
/\ pc_source = "consume"
/\ item' = d
/\ source_in' = source_in \ {d}
/\ pc_source' = "yield"
/\ pc_trans' = "trans"
/\ UNCHANGED << database, malformed_entities, pc_store >>
SourceAnext == /\ pc_source = "anext"
/\ pc_source' = "consume"
/\ UNCHANGED << source_in, database, malformed_entities, item, pc_trans, pc_store >>
SourceAthrow == /\ pc_source = "athrow"
/\ pc_source' = "consume"
/\ source_in' = source_in \union {item}
/\ UNCHANGED << database, malformed_entities, item, pc_trans, pc_store >>
Source == \/ SourceConsume
\/ SourceAnext
\/ SourceAthrow
Transform == /\ pc_trans = "trans"
/\ \/ /\ pc_store' = "store"
/\ UNCHANGED << source_in, database, malformed_entities, item, pc_source >>
\/ /\ pc_source' = "anext"
/\ malformed_entities' = malformed_entities \union {item}
/\ UNCHANGED << source_in, database, item, pc_store >>
/\ pc_trans' = "wait"
Store == /\ pc_store = "store"
/\ pc_source' = "anext"
/\ \/ /\ database' = database \union {item}
/\ pc_source' = "anext"
/\ UNCHANGED << source_in, malformed_entities, pc_trans, item >>
\/ /\ pc_source' = "athrow"
/\ UNCHANGED << source_in, database, malformed_entities, item, pc_trans >>
/\ pc_store' = "wait"
Fairness == /\ WF_vars(Store)
/\ WF_vars(Transform)
/\ WF_vars(Source)
Disjoint(S1, S2) == \A i \in S1: i \notin S2
DataIsSomewhereCheck == /\ \A d \in data: d \in {database} \union {malformed_entities} \union {source_in}
/\ Disjoint(database, malformed_entities)
/\ Disjoint(database, source_in)
/\ Disjoint(malformed_entities, source_in)
Terminating == /\ DataIsSomewhereCheck
/\ UNCHANGED vars
Step == \/ Source
\/ Transform
\/ Store
Spec == Init /\ [][Step]_vars /\ Fairness
DataIsSomewhere == <>[](DataIsSomewhereCheck)
=============================================================================
--- ETL.cfg
SPECIFICATION Spec
PROPERTY DataIsSomewhere
CONSTANT
data = { 1, 2, 3 }
--
You received this message because you are subscribed to the Google Groups "tlaplus" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tlaplus+unsubscribe@xxxxxxxxxxxxxxxx.
To view this discussion on the web visit https://groups.google.com/d/msgid/tlaplus/8e875fab-6638-41b4-81ef-adc2760d5ae3n%40googlegroups.com.