Context

Race Conditions are bad because...

Idea

There are some heuristics...

Analysis

With jQAssistant, race conditions can be identified by...


In [1]:
MATCH (c:Class)-[:DECLARES]->(f:Field)<-[w:WRITES]-(m:Method)
WHERE 
    EXISTS(f.static) AND NOT EXISTS(f.final)
RETURN 
    c.name as InClass, 
    m.name as theMethod, 
    w.lineNumber as writesInLine, 
    f.name as toStaticField


Out[1]:
+------------------------------------------------------------------------+
| "OwnerController" | "processFindForm" | 112          | "ownersIndexes" |
| "OwnerController" | "processFindForm" | 112          | "ownersIndexes" |
| "BrokenSingleton" | "getInstance"     | 11           | "INSTANCE"      |
+------------------------------------------------------------------------+

3 rows available after 41 ms, consumed after another 6 ms

Conclusion

Next steps are to remove...