You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2015/08/17 13:34:36 UTC

svn commit: r1696242 - in /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak: core/ plugins/document/ plugins/document/rdb/ util/

Author: reschke
Date: Mon Aug 17 11:34:36 2015
New Revision: 1696242

URL: http://svn.apache.org/r1696242
Log:
OAK-3204: move oak version detection into generic utility class and use it in ClusterNodeInfo and RDBDocument/BlobStore startup messages

Added:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/OakVersion.java   (with props)
Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java?rev=1696242&r1=1696241&r2=1696242&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/core/ContentRepositoryImpl.java Mon Aug 17 11:34:36 2015
@@ -103,6 +103,7 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
 import org.apache.jackrabbit.oak.spi.state.NodeStore;
 import org.apache.jackrabbit.oak.util.GenericDescriptors;
+import org.apache.jackrabbit.oak.util.OakVersion;
 
 /**
  * {@code NodeStore}-based implementation of
@@ -256,7 +257,7 @@ public class ContentRepositoryImpl imple
                 .put(QUERY_XPATH_DOC_ORDER, falseValue, true, true)
                 .put(QUERY_XPATH_POS_INDEX, falseValue, true, true)
                 .put(REP_NAME_DESC, valueFactory.createValue("Apache Jackrabbit Oak"), true, true)
-                .put(REP_VERSION_DESC, valueFactory.createValue(getVersion()), true, true)
+                .put(REP_VERSION_DESC, valueFactory.createValue(OakVersion.getVersion()), true, true)
                 .put(REP_VENDOR_DESC, valueFactory.createValue("The Apache Software Foundation"), true, true)
                 .put(REP_VENDOR_URL_DESC, valueFactory.createValue("http://www.apache.org/"), true, true)
                 .put(SPEC_NAME_DESC, valueFactory.createValue("Content Repository for Java Technology API"), true, true)
@@ -278,28 +279,4 @@ public class ContentRepositoryImpl imple
         }
         return gd;
     }
-
-    /**
-     * Returns the version of this repository implementation.
-     * @return the version
-     */
-    @Nonnull
-    private static String getVersion() {
-        InputStream stream = ContentRepositoryImpl.class.getResourceAsStream(
-                "/META-INF/maven/org.apache.jackrabbit/oak-core/pom.properties");
-        if (stream != null) {
-            try {
-                try {
-                    Properties properties = new Properties();
-                    properties.load(stream);
-                    return properties.getProperty("version");
-                } finally {
-                    stream.close();
-                }
-            } catch (IOException e) {
-                // ignore
-            }
-        }
-        return "SNAPSHOT";
-    }
 }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java?rev=1696242&r1=1696241&r2=1696242&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java Mon Aug 17 11:34:36 2015
@@ -29,6 +29,7 @@ import java.util.UUID;
 
 import org.apache.jackrabbit.oak.commons.StringUtils;
 import org.apache.jackrabbit.oak.stats.Clock;
+import org.apache.jackrabbit.oak.util.OakVersion;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -50,6 +51,11 @@ public class ClusterNodeInfo {
     private static final String MACHINE_ID_KEY = "machine";
 
     /**
+     * The Oak version.
+     */
+    private static final String OAK_VERSION_KEY = "oakVersion";
+
+    /**
      * The unique instance id within this machine (the current working directory
      * if not set).
      */
@@ -299,6 +305,7 @@ public class ClusterNodeInfo {
             update.set(INFO_KEY, clusterNode.toString());
             update.set(STATE, clusterNode.state.name());
             update.set(REV_RECOVERY_LOCK, clusterNode.revRecoveryLock.name());
+            update.set(OAK_VERSION_KEY, OakVersion.getVersion());
 
             final boolean success;
             if (clusterNode.newEntry) {

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java?rev=1696242&r1=1696241&r2=1696242&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBBlobStore.java Mon Aug 17 11:34:36 2015
@@ -40,6 +40,7 @@ import org.apache.jackrabbit.oak.commons
 import org.apache.jackrabbit.oak.plugins.blob.CachingBlobStore;
 import org.apache.jackrabbit.oak.plugins.document.DocumentStoreException;
 import org.apache.jackrabbit.oak.spi.blob.AbstractBlobStore;
+import org.apache.jackrabbit.oak.util.OakVersion;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -213,8 +214,8 @@ public class RDBBlobStore extends Cachin
                 tablesToBeDropped.addAll(tablesCreated);
             }
 
-            LOG.info("RDBBlobStore instantiated for database " + dbDesc + ", using driver: " + driverDesc + ", connecting to: "
-                    + dbUrl + ", transaction isolation level: " + isolationDiags);
+            LOG.info("RDBBlobStore (" + OakVersion.getVersion() + ") instantiated for database " + dbDesc + ", using driver: "
+                    + driverDesc + ", connecting to: " + dbUrl + ", transaction isolation level: " + isolationDiags);
             if (!tablesPresent.isEmpty()) {
                 LOG.info("Tables present upon startup: " + tablesPresent);
             }

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1696242&r1=1696241&r2=1696242&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java Mon Aug 17 11:34:36 2015
@@ -70,6 +70,7 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.document.mongo.MongoDocumentStore;
 import org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStoreDB.FETCHFIRSTSYNTAX;
 import org.apache.jackrabbit.oak.plugins.document.util.StringValue;
+import org.apache.jackrabbit.oak.util.OakVersion;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -585,9 +586,9 @@ public class RDBDocumentStore implements
 
         String diag = db.getAdditionalDiagnostics(this.ch, this.tnNodes);
 
-        LOG.info("RDBDocumentStore instantiated for database " + dbDesc + ", using driver: " + driverDesc + ", connecting to: "
-                + dbUrl + (diag.isEmpty() ? "" : (", properties: " + diag)) + ", transaction isolation level: " + isolationDiags
-                + tableDiags);
+        LOG.info("RDBDocumentStore (" + OakVersion.getVersion() + ") instantiated for database " + dbDesc + ", using driver: "
+                + driverDesc + ", connecting to: " + dbUrl + (diag.isEmpty() ? "" : (", properties: " + diag))
+                + ", transaction isolation level: " + isolationDiags + tableDiags);
         if (!tablesPresent.isEmpty()) {
             LOG.info("Tables present upon startup: " + tablesPresent);
         }

Added: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/OakVersion.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/OakVersion.java?rev=1696242&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/OakVersion.java (added)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/OakVersion.java Mon Aug 17 11:34:36 2015
@@ -0,0 +1,59 @@
+/*
+ * 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.jackrabbit.oak.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+import javax.annotation.Nonnull;
+
+/**
+ * Provides version information about Oak.
+ */
+public final class OakVersion {
+
+    private static String version = null;
+
+    /**
+     * Returns the version of oak-core.
+     * 
+     * @return the version (or "SNAPSHOT" when unknown)
+     */
+    @Nonnull
+    public synchronized static String getVersion() {
+        if (version == null) {
+            version = "SNAPSHOT"; // fallback
+            InputStream stream = OakVersion.class
+                    .getResourceAsStream("/META-INF/maven/org.apache.jackrabbit/oak-core/pom.properties");
+            if (stream != null) {
+                try {
+                    try {
+                        Properties properties = new Properties();
+                        properties.load(stream);
+                        version = properties.getProperty("version");
+                    } finally {
+                        stream.close();
+                    }
+                } catch (IOException e) {
+                    // ignore
+                }
+            }
+        }
+        return version;
+    }
+}

Propchange: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/util/OakVersion.java
------------------------------------------------------------------------------
    svn:eol-style = native