You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by bu...@apache.org on 2015/09/23 21:07:40 UTC
svn commit: r1704917 -
/uima/sandbox/uima-ducc/branches/uima-ducc-2.0.1/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java
Author: burn
Date: Wed Sep 23 19:07:40 2015
New Revision: 1704917
URL: http://svn.apache.org/viewvc?rev=1704917&view=rev
Log:
UIMA-4610 merge revision 1704853 into the 2.0.1 branch
Modified:
uima/sandbox/uima-ducc/branches/uima-ducc-2.0.1/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java (contents, props changed)
Modified: uima/sandbox/uima-ducc/branches/uima-ducc-2.0.1/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/branches/uima-ducc-2.0.1/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java?rev=1704917&r1=1704916&r2=1704917&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/branches/uima-ducc-2.0.1/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java (original)
+++ uima/sandbox/uima-ducc/branches/uima-ducc-2.0.1/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java Wed Sep 23 19:07:40 2015
@@ -33,20 +33,25 @@ public class DuccSchedulerClasses {
public static final String JobDriver = "JobDriver";
private static DuccSchedulerClasses instance = null;
-
+
private long lastModified = 0;
- NodeConfiguration nodeConfiguration = null;
- DuccLogger logger = null;
+ private DuccLogger logger = null;
+ private NodeConfiguration nodeConfiguration = null;
private String fileName = null;
public static DuccSchedulerClasses getInstance() {
- if(instance == null) {
- instance = new DuccSchedulerClasses();
+ // Use double check locking for safety
+ if (instance == null) {
+ synchronized(DuccSchedulerClasses.class){
+ if (instance == null) {
+ instance = new DuccSchedulerClasses();
+ }
+ }
}
return instance;
}
-
+
private DuccSchedulerClasses() {
String dir_home = Utils.findDuccHome(); // Ensure DUCC_HOME is in the System properties
String key = DuccPropertiesResolver.ducc_rm_class_definitions;
@@ -69,32 +74,29 @@ public class DuccSchedulerClasses {
public NodeConfiguration readConfiguration()
throws Exception
{
- instance = getInstance();
-
File file = new File(fileName);
if ( lastModified != file.lastModified() ) { // reread if it looks like it changed
synchronized(this) { // Ensure parallel threads see a valid nodeConfiguration
- nodeConfiguration = new NodeConfiguration(fileName, null, null, logger); // UIMA-4275 use single common constructor
- nodeConfiguration.readConfiguration();
- lastModified = file.lastModified(); // Update this AFTER the nodeConfiguration is valid
+ if ( lastModified != file.lastModified() ) { // an earlier thread may have already done the work
+ nodeConfiguration = new NodeConfiguration(fileName, null, null, logger); // UIMA-4275 use single common constructor
+ nodeConfiguration.readConfiguration();
+ lastModified = file.lastModified(); // Update this AFTER the nodeConfiguration is valid
+ }
}
}
-
return nodeConfiguration;
}
public Map<String, DuccProperties> getClasses()
throws Exception
{
- readConfiguration();
- return nodeConfiguration.getClasses();
+ return readConfiguration().getClasses();
}
public boolean isPreemptable(String class_name) throws Exception {
boolean retVal = false;
- readConfiguration();
- DuccProperties properties = nodeConfiguration.getClass(class_name);
+ DuccProperties properties = readConfiguration().getClass(class_name);
if (properties == null) {
throw new IllegalArgumentException("Invalid scheduling_class: " + class_name);
}
@@ -109,8 +111,7 @@ public class DuccSchedulerClasses {
throws Exception
{
String retVal = null;
- readConfiguration();
- DuccProperties properties = nodeConfiguration.getDefaultFairShareClass();
+ DuccProperties properties = readConfiguration().getDefaultFairShareClass();
if ( properties != null ) {
retVal = properties.getProperty("name");
}
@@ -122,8 +123,7 @@ public class DuccSchedulerClasses {
*/
public String getDebugClassDefaultName() throws Exception {
String retVal = null;
- readConfiguration();
- DuccProperties properties = nodeConfiguration.getDefaultFixedClass();
+ DuccProperties properties = readConfiguration().getDefaultFixedClass();
if (properties != null) {
retVal = properties.getProperty("name");
}
@@ -134,8 +134,7 @@ public class DuccSchedulerClasses {
throws Exception
{
String retVal = null;
- readConfiguration();
- DuccProperties properties = nodeConfiguration.getClass(class_name);
+ DuccProperties properties = readConfiguration().getClass(class_name);
if ( properties != null ) {
retVal = properties.getProperty("debug");
}
@@ -148,8 +147,7 @@ public class DuccSchedulerClasses {
public String[] getReserveClasses()
throws Exception
{
- readConfiguration();
- Map<String, DuccProperties> allClasses = nodeConfiguration.getClasses();
+ Map<String, DuccProperties> allClasses = readConfiguration().getClasses();
ArrayList<String> classList = new ArrayList<String>();
for ( DuccProperties p : allClasses.values() ) {
String pol = p.getProperty("policy");
@@ -166,8 +164,7 @@ public class DuccSchedulerClasses {
public String[] getFixedClasses()
throws Exception
{
- readConfiguration();
- Map<String, DuccProperties> allClasses = nodeConfiguration.getClasses();
+ Map<String, DuccProperties> allClasses = readConfiguration().getClasses();
ArrayList<String> classList = new ArrayList<String>();
for ( DuccProperties p : allClasses.values() ) {
String pol = p.getProperty("policy");
@@ -185,8 +182,7 @@ public class DuccSchedulerClasses {
throws Exception
{
String retVal = "";
- readConfiguration();
- DuccProperties properties = nodeConfiguration.getDefaultReserveClass();
+ DuccProperties properties = readConfiguration().getDefaultReserveClass();
if ( properties != null ) {
retVal = properties.getProperty("name");
}
Propchange: uima/sandbox/uima-ducc/branches/uima-ducc-2.0.1/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Sep 23 19:07:40 2015
@@ -0,0 +1 @@
+/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/utils/DuccSchedulerClasses.java:1704853