forked from Qortal/qortal
Qortal Core - Main Code Repository
Decentralized Data Network - Blockchain - TRUE Cross-Chain Trading - Application and Website Hosting - Much More - Qortal is the future internet infrastructure for the global digital world.
ee95a00ce2
This is probably our number one reliability issue at the moment, and has been a problem for a very long time. The existing CHECKPOINT_LOCK would prevent new connections being created when we are checkpointing or about to checkpoint. However, in many cases we obtain the db connection early on and then don't perform any queries until later. An example would be in synchronization, where the connection is obtained at the start of the process and then retained throughout the sync round. My suspicion is that we were encountering this series of events: 1. Open connection to database 2. Call maybeCheckpoint() and confirm there are no active transactions 3. An existing connection starts a new transaction 4. Checkpointing is performed, but deadlocks due to the in-progress transaction This potential fix includes preparedStatement.execute() in the CHECKPOINT_LOCK, to block any new transactions being started when we are locked for checkpointing. It is fairly high risk so we need to build some confidence in this before releasing it. |
||
---|---|---|
.github/workflows | ||
lib/org | ||
src | ||
tools | ||
WindowsInstaller | ||
.gitignore | ||
AutoUpdates.md | ||
DATABASE.md | ||
log4j2.properties | ||
pom.xml | ||
README.md | ||
run.sh | ||
start.sh | ||
stop.sh | ||
TestNets.md |
Qortal Project - Official Repo
Build / run
- Requires Java 11. OpenJDK 11 recommended over Java SE.
- Install Maven
- Use Maven to fetch dependencies and build:
mvn clean package
- Built JAR should be something like
target/qortal-1.0.jar
- Create basic settings.json file:
echo '{}' > settings.json
- Run JAR in same working directory as settings.json:
java -jar target/qortal-1.0.jar
- Wrap in shell script, add JVM flags, redirection, backgrounding, etc. as necessary.
- Or use supplied example shell script: start.sh