Print

Print


Author: [log in to unmask]
Date: Tue Oct 27 19:02:02 2015
New Revision: 3898

Log:
[HPSJAVA-626] Rearrange some conditions initialization to un-break monitoring app.

Modified:
    java/trunk/evio/src/main/java/org/hps/evio/EvioToLcio.java
    java/trunk/job/src/main/java/org/hps/job/JobManager.java
    java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/EventProcessing.java

Modified: java/trunk/evio/src/main/java/org/hps/evio/EvioToLcio.java
 =============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/EvioToLcio.java	(original)
+++ java/trunk/evio/src/main/java/org/hps/evio/EvioToLcio.java	Tue Oct 27 19:02:02 2015
@@ -24,7 +24,6 @@
 import org.apache.commons.cli.PosixParser;
 import org.freehep.record.source.NoSuchRecordException;
 import org.hps.conditions.database.DatabaseConditionsManager;
-import org.hps.detector.svt.SvtDetectorSetup;
 import org.hps.job.JobManager;
 import org.hps.logging.config.DefaultLoggingConfig;
 import org.hps.record.LCSimEventBuilder;
@@ -454,9 +453,6 @@
      */
     public void run() {
 
-        // Register class for setting up SVT detector state from conditions data.
-        DatabaseConditionsManager.getInstance().addConditionsListener(new SvtDetectorSetup());
-
         // Is there a run number from the command line options?
         if (runNumber != null) {
             // Initialize the conditions system before the job starts and freeze it.

Modified: java/trunk/job/src/main/java/org/hps/job/JobManager.java
 =============================================================================
--- java/trunk/job/src/main/java/org/hps/job/JobManager.java	(original)
+++ java/trunk/job/src/main/java/org/hps/job/JobManager.java	Tue Oct 27 19:02:02 2015
@@ -30,14 +30,6 @@
      * Class constructor.
      */
     public JobManager() {
-
-        try {
-            // Since this is packaged with the distribution, the class is not directly accessible.
-            final Object hpsJavaProperties = Class.forName("org.hps.HPSJavaProperties").newInstance();
-            logger.info(hpsJavaProperties.toString());
-        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
-            // Just don't print info if not accessible (running in test case?).
-        }
     }
 
     /**
@@ -47,10 +39,13 @@
      */
     public void setup(InputStream is) {
         
-        // Always want to reset the conditions system before initialization.
-        DatabaseConditionsManager.resetInstance();
-
+        // Add class that will setup SVT detector with conditions data (this is awkward but has to be done someplace).
+        DatabaseConditionsManager.getInstance().addConditionsListener(new SvtDetectorSetup());
+        
         super.setup(is);
+                
+        // Setup the conditions system if there is a ConditionsDriver present.
+        this.setupConditions();        
     }
     
     /**
@@ -61,12 +56,6 @@
     @Override
     public final boolean run() {
         
-        // Add class that will setup SVT detector with conditions data (this is awkward but has to be done someplace).
-        DatabaseConditionsManager.getInstance().addConditionsListener(new SvtDetectorSetup());
-
-        // Setup the conditions system if there is a ConditionsDriver present.
-        this.setupConditions();
-
         // Run the job.
         final boolean result = super.run();
 

Modified: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/EventProcessing.java
 =============================================================================
--- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/EventProcessing.java	(original)
+++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/EventProcessing.java	Tue Oct 27 19:02:02 2015
@@ -33,7 +33,6 @@
 import org.jlab.coda.et.exception.EtClosedException;
 import org.jlab.coda.et.exception.EtException;
 import org.lcsim.conditions.ConditionsListener;
-import org.lcsim.conditions.ConditionsManager;
 import org.lcsim.conditions.ConditionsReader;
 import org.lcsim.util.Driver;
 
@@ -192,6 +191,11 @@
      * The current {@link EventProcessing.SessionState} object which has all of the session state for event processing.
      */
     private SessionState sessionState;
+   
+    /**
+     * The current conditions manager.
+     */ 
+    private DatabaseConditionsManager conditionsManager;
 
     /**
      * Class constructor, which will initialize with reference to the current monitoring application and lists of extra
@@ -315,7 +319,7 @@
         }
 
         // Add the builder as a listener so it is notified when conditions change.
-        ConditionsManager.defaultInstance().addConditionsListener(this.sessionState.eventBuilder);
+        this.conditionsManager.addConditionsListener(this.sessionState.eventBuilder);
     }
 
     /**
@@ -409,12 +413,12 @@
      * Notify the loop to pause the event processing.
      */
     synchronized void pause() {
-        this.logger.finest("pausing");
         if (!this.connectionModel.getPaused()) {
+            this.logger.finest("pausing");
             this.sessionState.loop.pause();
             this.connectionModel.setPaused(true);
-        }
-        this.logger.finest("paused");
+            this.logger.finest("paused");
+        }
     }
 
     /**
@@ -435,7 +439,7 @@
      *
      * @param configurationModel the global @link org.hps.monitoring.model.ConfigurationModel} object
      */
-    void setup(final ConfigurationModel configurationModel) {
+    synchronized void setup(final ConfigurationModel configurationModel) {
 
         // Setup LCSim from the configuration.
         this.setupLcsim(configurationModel);
@@ -468,11 +472,13 @@
             // Create the job manager. A new conditions manager is instantiated from this call but not configured.
             this.sessionState.jobManager = new JobManager();
 
+            // Set ref to current conditions manager.
+            this.conditionsManager = DatabaseConditionsManager.getInstance();
+            
             // Add conditions listeners after new database conditions manager is initialized from the job manager.
-            final DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
             for (final ConditionsListener conditionsListener : this.sessionState.conditionsListeners) {
                 this.logger.config("adding conditions listener " + conditionsListener.getClass().getName());
-                conditionsManager.addConditionsListener(conditionsListener);
+                this.conditionsManager.addConditionsListener(conditionsListener);
             }
 
             if (configurationModel.hasValidProperty(ConfigurationModel.DETECTOR_ALIAS_PROPERTY)) {
@@ -507,15 +513,15 @@
                 final int userRunNumber = configurationModel.getUserRunNumber();
                 final String detectorName = configurationModel.getDetectorName();
                 this.logger.config("setting user run number " + userRunNumber + " with detector " + detectorName);
-                conditionsManager.setDetector(configurationModel.getDetectorName(), userRunNumber);
+                conditionsManager.setDetector(detectorName, userRunNumber);
                 if (configurationModel.hasPropertyKey(ConfigurationModel.FREEZE_CONDITIONS_PROPERTY)) {
                     // Freeze the conditions system to ignore run numbers from the events.
                     this.logger.config("user configured to freeze conditions system");
-                    conditionsManager.freeze();
+                    this.conditionsManager.freeze();
                 } else {
                     // Allow run numbers to be picked up from the events.
                     this.logger.config("user run number provided but conditions system is NOT frozen");
-                    conditionsManager.unfreeze();
+                    this.conditionsManager.unfreeze();
                 }
             }
 
@@ -545,8 +551,7 @@
                 .setEtConnection(this.sessionState.connection).setFilePath(configurationModel.getDataSourcePath())
                 .setLCSimEventBuilder(this.sessionState.eventBuilder);
 
-        this.logger.config("data source path is " + configurationModel.getDataSourcePath());
-        this.logger.config("data source type is " + configurationModel.getDataSourceType());
+        this.logger.config("data src path " + configurationModel.getDataSourcePath() + " and type " + configurationModel.getDataSourceType());
 
         // Set the max events.
         if (configurationModel.hasValidProperty(ConfigurationModel.MAX_EVENTS_PROPERTY)) {