You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jena.apache.org by "Andy Seaborne (JIRA)" <ji...@apache.org> on 2017/03/09 12:40:38 UTC

[jira] [Comment Edited] (JENA-1302) Intermittent Lucene prepareCommit exception during heavy read/write load

    [ https://issues.apache.org/jira/browse/JENA-1302?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15902978#comment-15902978 ] 

Andy Seaborne edited comment on JENA-1302 at 3/9/17 12:40 PM:
--------------------------------------------------------------

I think I have identified the problem.

{{DatasetGraphText.commit}} needs to be thread safe against the sequence of steps it is taking to commit the text index and the database.

A simple patch up and my test set runs the example test case.  The next step is to ensure the fix also applies to other code paths.

It runs to the point where an Linux OS issue with ports causes the test to lock up while ports are freed by the OS.  This is a known issue with port open/close at high frequency when the machine is also under high CPU load. Having client and server on the same machine makes it happen - the project has encountered it before with the testsuite. Running inside the Eclipse debugger does help the situation either.

FYI (2017-03):

TDB2 includes a general framework that can handle coordinating commits to multiple sources, using Lucence "prepareCommit, commit" sequence but that is longer term.



was (Author: andy.seaborne):
I think I have identified the problem.

{{DatasetGraphText.commit}} needs to be thread safe against the sequence of steps it is taking to commit the text index and the database.

A simple patch up and my test set runs the example test case.  The next step is to ensure the fix also applies to other code paths.

It runs to the point where an Linux OS issue with ports causes the test to lock up while ports are freed by the OS.  This is a known issue with port open/close at high frequency when the machine is also under high CPU load. The project has encountered it before.

FYI (2017-03):

TDB2 includes a general framework that can handle coordinating commits to multiple sources, using Lucence "prepareCommit, commit" sequence but that is longer term.


> Intermittent Lucene prepareCommit exception during heavy read/write load
> ------------------------------------------------------------------------
>
>                 Key: JENA-1302
>                 URL: https://issues.apache.org/jira/browse/JENA-1302
>             Project: Apache Jena
>          Issue Type: Bug
>          Components: Fuseki, TDB, Text
>    Affects Versions: Jena 3.3.0
>         Environment: CentOS 7.3 inside VM, 2 cores, OpenJDK 1.8.0_121 (64-bit), 1GB JVM heap, Fuseki running as service
>            Reporter: Vilnis Termanis (Iotic Labs)
>            Assignee: Andy Seaborne
>         Attachments: prepareCommit_error.tgz
>
>
> (*Note*: Could not add Fuseki 2.6.0 as affected version although I assume this is a TDB/text rather than Fuseki-related issue.)
> *Steps:*
> # Start with plain Fuseki + given configuration (TDB store + lucene text indexing)
> # Import 1k.ttl
> # Run lockup.py (same host, mix of multiple parallel updates & single select)
> *Result:*
> Every now and again one of the update queries fails with a 500 server error which is logged as:
> {{DatasetGraphText ERROR Exception in prepareCommit: prepareCommit was already called with no corresponding call to commit}}
> *Notes:*
> - Not reproducible without fix for JENA-1296 (and discovered during fix verification for said issue)
> - Run with [apache-jena-fuseki-2.6.0-20170228.233930-10.tar.gz|https://repository.apache.org/content/repositories/snapshots/org/apache/jena/apache-jena-fuseki/2.6.0-SNAPSHOT/apache-jena-fuseki-2.6.0-20170228.233930-10.tar.gz]
> - From cold-start of Fuseki, occurs within 30s of script run
> - Supplied test script required Python 3, {{rdflib>=4.2.2}} & {{SPARQLWrapper>=1.8.0}}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)