getodk / briefcase

ODK Briefcase is a Java application for fetching and pushing forms and their contents. It helps make billions of data points from ODK portable. Contribute and make the world a better place! ✨💼✨
https://docs.getodk.org/briefcase-intro
Other
60 stars 154 forks source link

Briefcase-Central actions are sometimes interrupted #804

Open kkrawczyk123 opened 5 years ago

kkrawczyk123 commented 5 years ago

Software versions

Briefcase v1.17.x, Java v1.x.x, operating system, Aggregate v1.x.x, Collect v1.x.x...

Problem description

Pull/Push form from/to Central is interrupted sometimes. On the clear state, it works without any problems.

Steps to reproduce the problem

I don't have any valuable reproduction steps for that issue, only log error: 2019-09-06 09:13:04,391 [ForkJoinPool-8-worker-1] ERROR o.o.briefcase.reused.job.JobsRunner - Error running Job java.lang.NoClassDefFoundError: Could not initialize class org.hsqldb.error.Error at org.hsqldb.Database.reopen(Unknown Source) at org.hsqldb.Database.open(Unknown Source) at org.hsqldb.DatabaseManager.getDatabase(Unknown Source) at org.hsqldb.DatabaseManager.newSession(Unknown Source) at org.hsqldb.jdbc.JDBCConnection.(Unknown Source) at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source) at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:270) at org.opendatakit.briefcase.util.DatabaseUtils.getConnection(DatabaseUtils.java:164) at org.opendatakit.briefcase.util.DatabaseUtils.connect(DatabaseUtils.java:70) at org.opendatakit.briefcase.util.DatabaseUtils.(DatabaseUtils.java:65) at org.opendatakit.briefcase.util.DatabaseUtils.withDb(DatabaseUtils.java:83) at org.opendatakit.briefcase.pull.central.PullFromCentral.lambda$pull$9(PullFromCentral.java:86) at org.opendatakit.briefcase.reused.job.Job.lambda$thenAccept$8(Job.java:134) at org.opendatakit.briefcase.reused.job.JobsRunner.lambda$launchAsync$1(JobsRunner.java:65) at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1386) at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289) at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056) at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692) at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

Expected behavior

Pull/Push actions shouldn't be interrupted.

Other information

Things you tried, stack traces, related issues, suggestions on how to fix it...

ggalmazor commented 4 years ago

My guts feeling is that the way we interact with the form submission HSQLDB databases doesn't work well in a highly concurrent scenario.

This is a problem that Briefcase v2.0 won't have by design.