You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2017/10/13 15:32:25 UTC

[2/4] jena git commit: JENA-1401: Use JDK-provided thread-safe set.

JENA-1401: Use JDK-provided thread-safe set.

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/57951c90
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/57951c90
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/57951c90

Branch: refs/heads/master
Commit: 57951c902e0f8a8c5567c6dd0f4d1ba72e3ea0d7
Parents: c991ae4
Author: Andy Seaborne <an...@apache.org>
Authored: Fri Oct 13 15:16:48 2017 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Fri Oct 13 15:17:02 2017 +0100

----------------------------------------------------------------------
 .../java/org/apache/jena/fuseki/async/AsyncPool.java |  8 +++++++-
 .../java/org/apache/jena/fuseki/mgt/ActionSleep.java |  8 ++------
 .../main/java/org/apache/jena/fuseki/mgt/Backup.java | 15 +++++++++++----
 3 files changed, 20 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/57951c90/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/async/AsyncPool.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/async/AsyncPool.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/async/AsyncPool.java
index 90645f5..2be9000 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/async/AsyncPool.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/async/AsyncPool.java
@@ -51,7 +51,13 @@ public class AsyncPool
         synchronized(mutex) {
             String taskId = Long.toString(++counter) ;
             Fuseki.serverLog.info(format("Task : %s : %s",taskId, displayName)) ;
-            Callable<Object> c = Executors.callable(task) ;
+            Callable<Object> c = ()->{
+                try { task.run(); } 
+                catch (Throwable th) {
+                    Fuseki.serverLog.warn(format("Exception in task %s execution", taskId), th);
+                }
+                return null; 
+            };
             AsyncTask asyncTask = new AsyncTask(c, this, taskId, displayName, dataService, requestId) ;
             /* Future<Object> future = */ executor.submit(asyncTask);
             runningTasks.put(taskId, asyncTask) ;

http://git-wip-us.apache.org/repos/asf/jena/blob/57951c90/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionSleep.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionSleep.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionSleep.java
index 94d7ad8..1f7a540 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionSleep.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/ActionSleep.java
@@ -31,7 +31,7 @@ import org.apache.jena.fuseki.servlets.HttpAction ;
 import org.apache.jena.fuseki.servlets.ServletOps ;
 import org.slf4j.Logger ;
 
-/** A task that kicks off a asynchornous operation that simply waits and exits.  For testing. */
+/** A task that kicks off a asynchronous operation that simply waits and exits.  For testing. */
 public class ActionSleep extends ActionCtl /* Not ActionAsyncTask - that is a container-item based.c */
 {
     private static final long serialVersionUID = 1925107412069359647L;
@@ -55,12 +55,8 @@ public class ActionSleep extends ActionCtl /* Not ActionAsyncTask - that is a co
 
     protected Runnable createRunnable(HttpAction action) {
         String name = action.getDatasetName() ;
-        if ( name == null ) {
-//            action.log.error("Null for dataset name in item request") ;  
-//            ServletOps.errorOccurred("Null for dataset name in item request");
-//            return null ;
+        if ( name == null )
             name = "''" ;
-        }
         
         String interval = action.request.getParameter("interval") ;
         int sleepMilli = 5000 ;

http://git-wip-us.apache.org/repos/asf/jena/blob/57951c90/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/Backup.java
----------------------------------------------------------------------
diff --git a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/Backup.java b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/Backup.java
index 8c9a125..644e953 100644
--- a/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/Backup.java
+++ b/jena-fuseki2/jena-fuseki-core/src/main/java/org/apache/jena/fuseki/mgt/Backup.java
@@ -19,7 +19,9 @@
 package org.apache.jena.fuseki.mgt;
 
 import java.io.* ;
+import java.util.Collections;
 import java.util.Set ;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.zip.GZIPOutputStream ;
 
 import org.apache.jena.atlas.io.IO ;
@@ -34,7 +36,6 @@ import org.apache.jena.riot.RDFDataMgr ;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.core.Transactional ;
 import org.apache.jena.sparql.core.TransactionalNull ;
-import org.eclipse.jetty.util.ConcurrentHashSet ;
 
 /** Perform a backup */ 
 public class Backup
@@ -58,23 +59,29 @@ public class Backup
     
     // Record of all backups so we don't attempt to backup the
     // same dataset multiple times at the same time. 
-    private static Set<DatasetGraph> activeBackups = new ConcurrentHashSet<>() ;
+    private static Set<DatasetGraph> activeBackups = Collections.newSetFromMap(new ConcurrentHashMap<>());
     
     /** Perform a backup.
-     *  A backup is a dump of the datset in comrpessed N-Quads, done inside a transaction.
+     *  A backup is a dump of the dataset in comrpessed N-Quads, done inside a transaction.
      */
     public static void backup(Transactional transactional, DatasetGraph dsg, String backupfile) {
+
+        Log.info(Fuseki.serverLog, "Backup("+backupfile+"):1");
+
         if ( transactional == null )
             transactional = new TransactionalNull() ;
         transactional.begin(ReadWrite.READ);
         try {
             Backup.backup(dsg, backupfile) ;
+        } catch (Exception ex) {
+            Log.warn(Fuseki.serverLog, "Exception in backup", ex);
         }
         finally {
             transactional.end() ;
         }
+        Log.info(Fuseki.serverLog, "Backup("+backupfile+"):2");
     }
-    
+
     /** Perform a backup.
      * 
      * @see #backup(Transactional, DatasetGraph, String)