JanusGraph / janusgraph-foundationdb

FoundationDB storage adapter for JanusGraph
Other
53 stars 18 forks source link

FoundationDBTx restart() race condition #37

Open twilmes opened 4 years ago

twilmes commented 4 years ago

getMultiRange (which is synchronized) is being called which is locking the transaction. Then, a transaction reset is being triggered, likely by the time limit being exceeded by the FDB driver, on that same transaction which triggers a call to restart(), which is also synchronized. It can't get the lock so it's stuck and then that blocks everything.

Steps to reproduce:

mvn -Dtest=FoundationDBOLAPTest clean package test

This thread dump demonstrates the issue on lines 23 and 502.

jgfdb-stack-dump.txt