diff --git a/core/sail/lmdb/src/main/java/org/eclipse/rdf4j/sail/lmdb/LmdbSailStore.java b/core/sail/lmdb/src/main/java/org/eclipse/rdf4j/sail/lmdb/LmdbSailStore.java index 10d3eede18..76f72f415e 100644 --- a/core/sail/lmdb/src/main/java/org/eclipse/rdf4j/sail/lmdb/LmdbSailStore.java +++ b/core/sail/lmdb/src/main/java/org/eclipse/rdf4j/sail/lmdb/LmdbSailStore.java @@ -920,7 +920,14 @@ public CloseableIteration getStatements(Resource subj, IRI try { return createStatementIterator(txn, subj, pred, obj, explicit, contexts); } catch (IOException e) { - throw new SailException("Unable to get statements", e); + try { + logger.warn("Failed to get statements, retrying", e); + // try once more before giving up + Thread.yield(); + return createStatementIterator(txn, subj, pred, obj, explicit, contexts); + } catch (IOException e2) { + throw new SailException("Unable to get statements", e); + } } } diff --git a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/MultithreadedTest.java b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/MultithreadedTest.java index 3eb0fed4aa..89aea92cac 100644 --- a/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/MultithreadedTest.java +++ b/core/sail/shacl/src/test/java/org/eclipse/rdf4j/sail/shacl/MultithreadedTest.java @@ -356,6 +356,9 @@ public void testLotsOfValidationFailuresSnapshot() throws IOException { @Test public void testLotsOfValidationFailuresSerializableValidation() throws IOException { System.out.println("testLotsOfValidationFailuresSerializableValidation"); + Logger root = (Logger) LoggerFactory.getLogger(ShaclSailBaseConfiguration.class.getName()); + root.setLevel(Level.ERROR); + ShaclSail sail = new ShaclSail(getBaseSail()); sail.setParallelValidation(true);