[
https://issues.apache.org/jira/browse/JENA-1223?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15526207#comment-15526207
]
ASF GitHub Bot commented on JENA-1223:
--------------------------------------
Github user ajs6f commented on a diff in the pull request:
https://github.com/apache/jena/pull/170#discussion_r79304304
--- Diff:
jena-arq/src/test/java/org/apache/jena/sparql/transaction/AbstractTestTransactionIsolation.java
---
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.jena.sparql.transaction;
+
+import static org.apache.jena.query.ReadWrite.* ;
+
+import org.apache.jena.atlas.iterator.Iter ;
+import org.apache.jena.sparql.core.DatasetGraph ;
+import org.apache.jena.sparql.core.Quad ;
+import org.apache.jena.sparql.sse.SSE ;
+import org.apache.jena.system.ThreadAction ;
+import org.apache.jena.system.ThreadTxn ;
+import org.junit.Assert ;
+import org.junit.Test ;
+
+/** Isolation tests */
+public abstract class AbstractTestTransactionIsolation {
+
+ protected abstract DatasetGraph create() ;
+ static Quad q1 = SSE.parseQuad("(_ :s :p 111)") ;
+
+ @Test
+ public void isolation_01() {
+ // Start a read transaction on another thread.
+ // The transaction has begin() by the time threadTxnRead
+ // returns but the action of the ThreadTxn is not triggered
+ // until other.run() is called.
+ DatasetGraph dsg = create() ;
+ ThreadAction other = ThreadTxn.threadTxnRead(dsg, ()-> {
+ long x = Iter.count(dsg.find()) ;
+ Assert.assertEquals(0, x) ;
--- End diff --
Maybe `ThreadAction other = ThreadTxn.threadTxnRead(dsg, () ->
Assert.assertTrue(dsg.isEmpty()));` is a little clearer?
> Provide transaction promotion
> -----------------------------
>
> Key: JENA-1223
> URL: https://issues.apache.org/jira/browse/JENA-1223
> Project: Apache Jena
> Issue Type: Improvement
> Components: TDB
> Affects Versions: Jena 3.1.0
> Reporter: Andy Seaborne
>
> This JIRA is to add the ability for a read transaction to promote to a write
> transaction.
> API changes are necessary to expose this feature properly and uniformly.
> PR #161 provides the machinery for TDB. To avoid general API changes outside
> TDB, this happens automatically in {{DatasetGraphTransaction.getW()}} if
> enabled (by default it isn't, the PR makes no change to behaviour of TDB by
> default). It needs to be enabled with {{DatasetGraphTransaction.promotion =
> true}}. PR#161 does contain internal changes (e.g. {{DatasetGraphWrapper}})
> outside TDB.
> This leads towards a general {{begin()}} for transactions.
> This JIRA is cover discussion on the API and record changes to the subsystems.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)