Print

Print


Author: [log in to unmask]
Date: Sat Mar 14 16:32:54 2015
New Revision: 2455

Log:
Mark several key methods as synchronized to improve thread safety.

Modified:
    java/trunk/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java

Modified: java/trunk/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java
 =============================================================================
--- java/trunk/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java	(original)
+++ java/trunk/conditions/src/main/java/org/hps/conditions/database/DatabaseConditionsManager.java	Sat Mar 14 16:32:54 2015
@@ -139,7 +139,7 @@
      * Get the static instance of this class.
      * @return The static instance of the manager.
      */
-    public static DatabaseConditionsManager getInstance() {
+    public synchronized static DatabaseConditionsManager getInstance() {
 
         logger.finer("getting conditions manager instance");
         
@@ -177,7 +177,7 @@
      * Open the database connection.
      * @return True if a connection was opened; false if using an existing connection.
      */
-    public boolean openConnection() {
+    public synchronized boolean openConnection() {
         boolean openedConnection = false;
         if (!isConnected) {
             // Do the connection parameters need to be figured out automatically?
@@ -211,7 +211,7 @@
     /**
      * Close the database connection.
      */
-    public void closeConnection() {
+    public synchronized void closeConnection() {
         logger.fine("closing connection");
         if (connection != null) {
             try {
@@ -232,7 +232,7 @@
      * based on the flag.  Otherwise, it should be left open.
      * @param connectionOpened True to close the connection; false to leave it open.
      */
-    public void closeConnection(boolean connectionOpened) {
+    public synchronized void closeConnection(boolean connectionOpened) {
         if (connectionOpened) {
             closeConnection();
         }
@@ -269,7 +269,7 @@
      * needs to be updated.
      */
     @Override
-    public void setDetector(String detectorName, int runNumber) throws ConditionsNotFoundException {
+    public synchronized void setDetector(String detectorName, int runNumber) throws ConditionsNotFoundException {
 
         logger.finest("setDetector " + detectorName + " with run number " + runNumber);
         
@@ -371,7 +371,7 @@
      * @param tableName The name of the table.
      * @return The next collection ID.
      */
-    public int getNextCollectionID(String tableName) {
+    public synchronized int getNextCollectionID(String tableName) {
         boolean openedConnection = openConnection();
         ResultSet resultSet = selectQuery("SELECT MAX(collection_id)+1 FROM " + tableName);
         int collectionId = 1;
@@ -537,7 +537,7 @@
      * This method can be called to "freeze" the conditions system so that
      * any subsequent updates to run number or detector name will be ignored.
      */
-    public void freeze() {
+    public synchronized void freeze() {
         if (getDetector() != null && getRun() != -1) {
             isFrozen = true;
             logger.config("conditions system is frozen");
@@ -549,7 +549,7 @@
     /**
      * Un-freeze the conditions system so that updates will be received again.
      */
-    public void unfreeze() {
+    public synchronized void unfreeze() {
         isFrozen = false;
         logger.info("conditions system unfrozen");
     }
@@ -750,7 +750,7 @@
      * configuration and loading of conditions onto the Detector.
      */
     private void initialize(String detectorName, int runNumber) throws ConditionsNotFoundException {
-        
+                
         logger.config("initializing with detector " + detectorName + " and run " + runNumber);
         
         // Is not configured yet?