You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by ge...@apache.org on 2018/03/27 08:10:09 UTC

oozie git commit: OOZIE-2645 Deprecate Instrumentation in favor of Metrics (andras.piros via gezapeti)

Repository: oozie
Updated Branches:
  refs/heads/master 3fa863320 -> 77cd1fe20


OOZIE-2645 Deprecate Instrumentation in favor of Metrics (andras.piros via gezapeti)


Project: http://git-wip-us.apache.org/repos/asf/oozie/repo
Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/77cd1fe2
Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/77cd1fe2
Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/77cd1fe2

Branch: refs/heads/master
Commit: 77cd1fe209607bccadc603cdbf69713858ad455c
Parents: 3fa8633
Author: Gezapeti Cseh <ge...@apache.org>
Authored: Tue Mar 27 10:09:39 2018 +0200
Committer: Gezapeti Cseh <ge...@apache.org>
Committed: Tue Mar 27 10:09:44 2018 +0200

----------------------------------------------------------------------
 .../oozie/service/InstrumentationService.java   |  2 +
 .../org/apache/oozie/util/Instrumentation.java  |  4 +-
 .../oozie/util/MetricsInstrumentation.java      | 42 ++++++++++++++++----
 core/src/main/resources/oozie-default.xml       |  2 +-
 .../service/TestInstrumentationService.java     | 18 +++++++--
 .../apache/oozie/servlet/TestAdminServlet.java  |  8 ++--
 .../oozie/servlet/TestV1AdminServlet.java       | 11 +++++
 .../oozie/util/TestMetricsInstrumentation.java  |  9 ++---
 .../resources/oozie-site-instrumentation.xml    |  2 +-
 docs/src/site/twiki/AG_Install.twiki            | 38 +++++++++++++-----
 docs/src/site/twiki/AG_Monitoring.twiki         |  9 ++++-
 docs/src/site/twiki/DG_CommandLineTool.twiki    |  8 +++-
 docs/src/site/twiki/WebServicesAPI.twiki        |  5 +++
 release-log.txt                                 |  1 +
 14 files changed, 123 insertions(+), 36 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/core/src/main/java/org/apache/oozie/service/InstrumentationService.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/service/InstrumentationService.java b/core/src/main/java/org/apache/oozie/service/InstrumentationService.java
index afa3511..9c6ee35 100644
--- a/core/src/main/java/org/apache/oozie/service/InstrumentationService.java
+++ b/core/src/main/java/org/apache/oozie/service/InstrumentationService.java
@@ -29,7 +29,9 @@ import java.util.Map;
  * This service provides an {@link Instrumentation} instance configured to support samplers. <p> This service depends
  * on the {@link SchedulerService}. <p> The {@link #CONF_LOGGING_INTERVAL} configuration property indicates how often
  * snapshots of the instrumentation should be logged.
+ * @deprecated since 5.0.0
  */
+@Deprecated
 public class InstrumentationService implements Service {
     private static final String JVM_INSTRUMENTATION_GROUP = "jvm";
 

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/core/src/main/java/org/apache/oozie/util/Instrumentation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/util/Instrumentation.java b/core/src/main/java/org/apache/oozie/util/Instrumentation.java
index a57b665..8bcb64c 100644
--- a/core/src/main/java/org/apache/oozie/util/Instrumentation.java
+++ b/core/src/main/java/org/apache/oozie/util/Instrumentation.java
@@ -43,7 +43,9 @@ import java.util.concurrent.locks.ReentrantLock;
 /**
  * Instrumentation framework that supports Timers, Counters, Variables and Sampler instrumentation elements. <p> All
  * instrumentation elements have a group and a name.
+ * @deprecated since 5.0.0
  */
+@Deprecated
 public class Instrumentation {
     private ScheduledExecutorService scheduler;
     private Lock counterLock;
@@ -207,7 +209,7 @@ public class Instrumentation {
     /**
      * Counter Instrumentation element.
      */
-    private static class Counter extends AtomicLong implements Element<Long> {
+    public static class Counter extends AtomicLong implements Element<Long> {
 
         /**
          * Return the counter snapshot.

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/core/src/main/java/org/apache/oozie/util/MetricsInstrumentation.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/oozie/util/MetricsInstrumentation.java b/core/src/main/java/org/apache/oozie/util/MetricsInstrumentation.java
index 1288a3f..6b19d60 100644
--- a/core/src/main/java/org/apache/oozie/util/MetricsInstrumentation.java
+++ b/core/src/main/java/org/apache/oozie/util/MetricsInstrumentation.java
@@ -45,8 +45,10 @@ import java.io.OutputStream;
 import java.net.InetSocketAddress;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
@@ -66,7 +68,7 @@ public class MetricsInstrumentation extends Instrumentation {
     private final MetricRegistry metricRegistry;
     private transient ObjectMapper jsonMapper;
     private ScheduledExecutorService scheduler;
-    private final LoadingCache<String, Counter> counters;
+    private final LoadingCache<String, com.codahale.metrics.Counter> counters;
     private final Map<String, Gauge> gauges;
     private final LoadingCache<String, com.codahale.metrics.Timer> timers;
     private final Map<String, Histogram> histograms;
@@ -173,10 +175,10 @@ public class MetricsInstrumentation extends Instrumentation {
 
         // By setting this up as a cache, if a counter doesn't exist when we try to retrieve it, it will automatically be created
         counters = CacheBuilder.newBuilder().build(
-                new CacheLoader<String, Counter>() {
+                new CacheLoader<String, com.codahale.metrics.Counter>() {
                     @Override
-                    public Counter load(String key) throws Exception {
-                        Counter counter = new Counter();
+                    public com.codahale.metrics.Counter load(String key) throws Exception {
+                        com.codahale.metrics.Counter counter = new com.codahale.metrics.Counter();
                         metricRegistry.register(key, counter);
                         return counter;
                     }
@@ -408,13 +410,39 @@ public class MetricsInstrumentation extends Instrumentation {
     }
 
     /**
-     * Not Supported: throws {@link UnsupportedOperationException}
+     * For backwards compatibility reasons with {@link Instrumentation}, create a deep copy of {@link #counters}:
+     * <ul>
+     *     <li>counter groups and names are separated by {@code "."}. Here we use Codahale Metrics internals to concatenate group
+     *     and name pairs with {@code "."}</li>
+     *     <li>no synchronization is done on {@link #counters} between calls to {@link LoadingCache#asMap()},
+     *     {@link ConcurrentMap#keySet()}, and {@link ConcurrentMap#get(Object)}. Hence it's possible to get values that are
+     *     not present anymore. It's also possible to get values that have been updated in the meanwhile, and not to get values
+     *     that have been inserted in the meanwhile</li>
+     * </ul>
      *
-     * @return nothing
+     * @return a deep copy of counter groups, names, and values
      */
     @Override
     public Map<String, Map<String, Element<Long>>> getCounters() {
-        throw new UnsupportedOperationException();
+        final ConcurrentMap<String, com.codahale.metrics.Counter> countersAsMap = counters.asMap();
+        final Map<String, Map<String, Element<Long>>> countersAsDeepMap = new HashMap<>();
+
+        for (final Map.Entry<String, com.codahale.metrics.Counter> counterEntry : countersAsMap.entrySet()) {
+            final String groupAndName = counterEntry.getKey();
+            final com.codahale.metrics.Counter value = counterEntry.getValue();
+            final String group = groupAndName.substring(0, groupAndName.indexOf("."));
+            final String name = groupAndName.substring(groupAndName.indexOf(".") + 1);
+
+            if (!countersAsDeepMap.containsKey(group)) {
+                countersAsDeepMap.put(group, new HashMap<>());
+            }
+
+            final Instrumentation.Counter counter = new Counter();
+            counter.set(value.getCount());
+            countersAsDeepMap.get(group).put(name, counter);
+        }
+
+        return countersAsDeepMap;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/core/src/main/resources/oozie-default.xml
----------------------------------------------------------------------
diff --git a/core/src/main/resources/oozie-default.xml b/core/src/main/resources/oozie-default.xml
index 966dd29..6f89258 100644
--- a/core/src/main/resources/oozie-default.xml
+++ b/core/src/main/resources/oozie-default.xml
@@ -138,7 +138,7 @@
         <name>oozie.services</name>
         <value>
             org.apache.oozie.service.SchedulerService,
-            org.apache.oozie.service.InstrumentationService,
+            org.apache.oozie.service.MetricsInstrumentationService,
             org.apache.oozie.service.MemoryLocksService,
             org.apache.oozie.service.UUIDService,
             org.apache.oozie.service.ELService,

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/core/src/test/java/org/apache/oozie/service/TestInstrumentationService.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/oozie/service/TestInstrumentationService.java b/core/src/test/java/org/apache/oozie/service/TestInstrumentationService.java
index b31816e..7ad31f3 100644
--- a/core/src/test/java/org/apache/oozie/service/TestInstrumentationService.java
+++ b/core/src/test/java/org/apache/oozie/service/TestInstrumentationService.java
@@ -40,11 +40,21 @@ public class TestInstrumentationService extends XTestCase {
         assertNotNull(Services.get().get(InstrumentationService.class));
         assertNotNull(Services.get().get(InstrumentationService.class).get());
         Instrumentation instr = Services.get().get(InstrumentationService.class).get();
-        assertFalse(instr instanceof MetricsInstrumentation);
+        assertTrue("Metrics is enabled by default since 5.0.0", instr instanceof MetricsInstrumentation);
     }
 
-    public void testIsEnabled() {
-        assertTrue(InstrumentationService.isEnabled());
-        assertFalse(MetricsInstrumentationService.isEnabled());
+    public void testIsDisabledByDefault() {
+        assertFalse("Instrumentation is disabled by default since 5.0.0", InstrumentationService.isEnabled());
+        assertTrue("Metrics is enabled by default since 5.0.0", MetricsInstrumentationService.isEnabled());
+    }
+
+    public void testEnable() throws ServiceException {
+        Services.get().destroy();
+        setSystemProperty(Services.CONF_SERVICE_EXT_CLASSES, InstrumentationService.class.getName());
+
+        new Services().init();
+
+        assertTrue("Instrumentation is enabled successfully", InstrumentationService.isEnabled());
+        assertFalse("Metrics is disabled successfully", MetricsInstrumentationService.isEnabled());
     }
 }

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/core/src/test/java/org/apache/oozie/servlet/TestAdminServlet.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/oozie/servlet/TestAdminServlet.java b/core/src/test/java/org/apache/oozie/servlet/TestAdminServlet.java
index f91d22f..e4990c9 100644
--- a/core/src/test/java/org/apache/oozie/servlet/TestAdminServlet.java
+++ b/core/src/test/java/org/apache/oozie/servlet/TestAdminServlet.java
@@ -112,16 +112,16 @@ public class TestAdminServlet extends DagServletTestCase {
         });
     }
 
-    public void testInstrumentation() throws Exception {
-        runTest("/v0/admin/*", V0AdminServlet.class, IS_SECURITY_ENABLED, new Callable<Void>() {
+    public void testMetrics() throws Exception {
+        runTest("/v2/admin/*", V2AdminServlet.class, IS_SECURITY_ENABLED, new Callable<Void>() {
             public Void call() throws Exception {
-                URL url = createURL(RestConstants.ADMIN_INSTRUMENTATION_RESOURCE, Collections.EMPTY_MAP);
+                URL url = createURL(RestConstants.ADMIN_METRICS_RESOURCE, Collections.EMPTY_MAP);
                 HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                 conn.setRequestMethod("GET");
                 assertEquals(HttpServletResponse.SC_OK, conn.getResponseCode());
                 assertTrue(conn.getHeaderField("content-type").startsWith(RestConstants.JSON_CONTENT_TYPE));
                 JSONObject json = (JSONObject) JSONValue.parse(new InputStreamReader(conn.getInputStream()));
-                assertTrue(json.containsKey(JsonTags.INSTR_VARIABLES));
+                assertTrue(json.containsKey(JsonTags.INSTR_COUNTERS));
                 return null;
             }
         });

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/core/src/test/java/org/apache/oozie/servlet/TestV1AdminServlet.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/oozie/servlet/TestV1AdminServlet.java b/core/src/test/java/org/apache/oozie/servlet/TestV1AdminServlet.java
index 534f572..8ec56dd 100644
--- a/core/src/test/java/org/apache/oozie/servlet/TestV1AdminServlet.java
+++ b/core/src/test/java/org/apache/oozie/servlet/TestV1AdminServlet.java
@@ -36,10 +36,14 @@ import org.apache.oozie.BuildInfo;
 import org.apache.oozie.client.OozieClient.SYSTEM_MODE;
 import org.apache.oozie.client.rest.JsonTags;
 import org.apache.oozie.client.rest.RestConstants;
+import org.apache.oozie.service.InstrumentationService;
 import org.apache.oozie.service.Services;
 import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;
 import org.json.simple.JSONValue;
+import org.junit.internal.AssumptionViolatedException;
+
+import static org.junit.Assume.assumeTrue;
 
 public class TestV1AdminServlet extends DagServletTestCase {
 
@@ -118,6 +122,13 @@ public class TestV1AdminServlet extends DagServletTestCase {
     }
 
     public void testInstrumentation() throws Exception {
+        try {
+            assumeTrue("Instrumentation is disabled by default since 5.0.0", InstrumentationService.isEnabled());
+        } catch (final AssumptionViolatedException ex) {
+            log.info("Istrumentation is disabled");
+            return;
+        }
+
         runTest("/v1/admin/*", V1AdminServlet.class, IS_SECURITY_ENABLED, new Callable<Void>() {
             public Void call() throws Exception {
                 URL url = createURL(RestConstants.ADMIN_INSTRUMENTATION_RESOURCE, Collections.EMPTY_MAP);

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/core/src/test/java/org/apache/oozie/util/TestMetricsInstrumentation.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/oozie/util/TestMetricsInstrumentation.java b/core/src/test/java/org/apache/oozie/util/TestMetricsInstrumentation.java
index ab97443..dbb75ed 100644
--- a/core/src/test/java/org/apache/oozie/util/TestMetricsInstrumentation.java
+++ b/core/src/test/java/org/apache/oozie/util/TestMetricsInstrumentation.java
@@ -79,6 +79,10 @@ public class TestMetricsInstrumentation extends XTestCase {
         assertEquals(1L, inst.getMetricRegistry().getCounters().get("a.1").getCount());
         assertEquals(2L, inst.getMetricRegistry().getCounters().get("a.2").getCount());
         assertEquals(3L, inst.getMetricRegistry().getCounters().get("b.1").getCount());
+
+        assertEquals(1L, inst.getCounters().get("a").get("1").getValue().longValue());
+        assertEquals(2L, inst.getCounters().get("a").get("2").getValue().longValue());
+        assertEquals(3L, inst.getCounters().get("b").get("1").getValue().longValue());
     }
 
     private long getTimerValue(Timer timer) {
@@ -200,11 +204,6 @@ public class TestMetricsInstrumentation extends XTestCase {
         } catch (UnsupportedOperationException uoe) {
         }
         try {
-            instr.getCounters();
-            fail();
-        } catch (UnsupportedOperationException uoe) {
-        }
-        try {
             instr.getSamplers();
             fail();
         } catch (UnsupportedOperationException uoe) {

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/core/src/test/resources/oozie-site-instrumentation.xml
----------------------------------------------------------------------
diff --git a/core/src/test/resources/oozie-site-instrumentation.xml b/core/src/test/resources/oozie-site-instrumentation.xml
index ab3f0f5..31f4d83 100644
--- a/core/src/test/resources/oozie-site-instrumentation.xml
+++ b/core/src/test/resources/oozie-site-instrumentation.xml
@@ -22,7 +22,7 @@
         <name>oozie.services</name>
         <value>
             org.apache.oozie.service.SchedulerService,
-            org.apache.oozie.service.InstrumentationService
+            org.apache.oozie.service.MetricsInstrumentationService
         </value>
     </property>
 

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/docs/src/site/twiki/AG_Install.twiki
----------------------------------------------------------------------
diff --git a/docs/src/site/twiki/AG_Install.twiki b/docs/src/site/twiki/AG_Install.twiki
index 8e2d795..77ee4ee 100644
--- a/docs/src/site/twiki/AG_Install.twiki
+++ b/docs/src/site/twiki/AG_Install.twiki
@@ -906,25 +906,45 @@ address.  This will allow clients to use https while the ApplicationMaster uses
 
 Refer to the [[./oozie-default.xml][oozie-default.xml]] for details.
 
----+++ Using Metrics instead of Instrumentation
+---+++ Using Instrumentation instead of Metrics
 
 As of version 4.1.0, Oozie includes a replacement for the Instrumentation based on Codahale's Metrics library.  It includes a
 number of improvements over the original Instrumentation included in Oozie.  They both report most of the same information, though
 the formatting is slightly different and there's some additional information in the Metrics version; the format of the output to the
-oozie-instrumentation log is also different.  The Metrics version can be enabled by adding the =MetricsInstrumentationService= to
-the list of services:
-     <verbatim>
-     <property>
+oozie-instrumentation log is also different.
+
+As of version 5.0.0, =MetricsInstrumentationService= is the default one, it's enlisted in =oozie.services=:
+    <verbatim>
+    <property>
+        <name>oozie.services</name>
+        <value>
+            ...
+            org.apache.oozie.service.MetricsInstrumentationService,
+            ...
+        </value>
+     </property>
+     </verbatim>
+
+The deprecated =InstrumentationService= can be enabled by adding =InstrumentationService= reference to the list of
+=oozie.services.ext=:
+    <verbatim>
+    <property>
         <name>oozie.services.ext</name>
         <value>
-            org.apache.oozie.service.MetricsInstrumentationService
+            ...
+            org.apache.oozie.service.InstrumentationService,
+            ...
         </value>
      </property>
      </verbatim>
 
-Once enabled, the =admin/instrumentation= REST endpoint will no longer be available and instead the =admin/metrics= endpoint should
-be used (see the [[WebServicesAPI#Oozie_Metrics][Web Services API]] documentation for more details); the Oozie Web UI will also
-replace the "Instrumentation" tab with a "Metrics" tab.
+By default the =admin/instrumentation= REST endpoint is no longer be available and instead the =admin/metrics= endpoint can
+be used (see the [[WebServicesAPI#Oozie_Metrics][Web Services API]] documentation for more details); the Oozie Web UI also replaces
+the "Instrumentation" tab with a "Metrics" tab.
+
+If the deprecated =InstrumentationService= is used, the =admin/instrumentation= REST endpoint gets enabled, the =admin/metrics=
+REST endpoint is no longer available (see the [[WebServicesAPI#Oozie_Metrics][Web Services API]] documentation for more details);
+the Oozie Web UI also replaces the "Metrics" tab with the "Instrumentation" tab.
 
 We can also publish the instrumentation metrics to the external server graphite or ganglia. For this the following
 properties should be specified in oozie-site.xml :

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/docs/src/site/twiki/AG_Monitoring.twiki
----------------------------------------------------------------------
diff --git a/docs/src/site/twiki/AG_Monitoring.twiki b/docs/src/site/twiki/AG_Monitoring.twiki
index 523f851..425f554 100644
--- a/docs/src/site/twiki/AG_Monitoring.twiki
+++ b/docs/src/site/twiki/AG_Monitoring.twiki
@@ -11,8 +11,13 @@
 Oozie code is instrumented in several places to collect runtime metrics. The instrumentation data can be used to
 determine the health of the system, performance of the system, and to tune the system.
 
-The instrumentation is accessible via the Admin web-services API and is also written on regular intervals to an
-instrumentation log.
+This comes in two flavors:
+   * metrics (by default enabled since 5.0.0)
+   * instrumentation (deprecated and by default disabled since 5.0.0)
+
+The instrumentation is accessible via the Admin web-services API (see the [[WebServicesAPI#Oozie_Metrics][metrics]] and
+[[WebServicesAPI#Oozie_Instrumentation][instrumentation]] Web Services API documentations for more details) and is also written on
+regular intervals to an instrumentation log.
 
 Instrumentation data includes variables, samplers, timers and counters.
 

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/docs/src/site/twiki/DG_CommandLineTool.twiki
----------------------------------------------------------------------
diff --git a/docs/src/site/twiki/DG_CommandLineTool.twiki b/docs/src/site/twiki/DG_CommandLineTool.twiki
index a94201d..9a17459 100644
--- a/docs/src/site/twiki/DG_CommandLineTool.twiki
+++ b/docs/src/site/twiki/DG_CommandLineTool.twiki
@@ -1375,6 +1375,8 @@ It returns a list of java system properties in the Oozie server.
 
 ---+++ Displaying the Oozie server Instrumentation
 
+Deprecated and by default disabled since 5.0.0.
+
 Example:
 
 <verbatim>
@@ -1432,6 +1434,8 @@ hasn't incremented yet will not show up.
 
 ---+++ Displaying the Oozie server Metrics
 
+By default enabled since 5.0.0.
+
 Example:
 
 <verbatim>
@@ -1989,8 +1993,8 @@ Getting OS Environment Variables...Done
 Getting Java System Properties...Done
 Getting Queue Dump...Done
 Getting Thread Dump...Done
-Getting Instrumentation...Done
-Getting Metrics...Skipping (Metrics are unavailable)
+Getting Instrumentation...Skipping (Instrumentation is unavailable)
+Getting Metrics...Done
 Getting Details for 0000001-170918144116149-oozie-test-W...Done
 Creating Zip File: /var/lib/oozie/diag/oozie-diag-bundle-1505748797206.zip...Done
 </verbatim>

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/docs/src/site/twiki/WebServicesAPI.twiki
----------------------------------------------------------------------
diff --git a/docs/src/site/twiki/WebServicesAPI.twiki b/docs/src/site/twiki/WebServicesAPI.twiki
index c662a5e..f9008a6 100644
--- a/docs/src/site/twiki/WebServicesAPI.twiki
+++ b/docs/src/site/twiki/WebServicesAPI.twiki
@@ -191,6 +191,8 @@ Content-Type: application/json;charset=UTF-8
 
 _Identical to the corresponding Oozie v0 WS API_
 
+Deprecated and by default disabled since 5.0.0.
+
 A HTTP GET request returns the Oozie instrumentation information.  Keep in mind that timers and counters that the Oozie server
 hasn't incremented yet will not show up.
 
@@ -280,8 +282,11 @@ _Available in the Oozie v2 WS API and later_
 A HTTP GET request returns the Oozie metrics information.  Keep in mind that timers and counters that the Oozie server
 hasn't incremented yet will not show up.
 
+
 *Note:* If Metrics is enabled, then Instrumentation is unavailable.
 
+*Note:* by default enabled since 5.0.0.
+
 *Request:*
 
 <verbatim>

http://git-wip-us.apache.org/repos/asf/oozie/blob/77cd1fe2/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index 02ff8eb..d7e3057 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -1,5 +1,6 @@
 -- Oozie 5.0.0 release (trunk - unreleased)
 
+OOZIE-2645 Deprecate Instrumentation in favor of Metrics (andras.piros via gezapeti)
 OOZIE-3150 Remove references to not present dependencies within NOTICE.txt (gezapeti via andras.piros)
 OOZIE-3201 Typo in TestCoordActionInputCheckXCommand (gongchuanjie via andras.piros)
 OOZIE-3056 Implement new mechanism to specify ShareLibs for workflow actions (gezapeti via andras.piros)