OOZIE-1838 jdbc.connections.active sampler does not show up (rkanter)
Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/2a85bfe2 Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/2a85bfe2 Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/2a85bfe2 Branch: refs/heads/master Commit: 2a85bfe253e8f289051797eddf4b52de0b9e475a Parents: 503134a Author: Robert Kanter <[email protected]> Authored: Tue May 27 14:06:19 2014 -0700 Committer: Robert Kanter <[email protected]> Committed: Tue May 27 14:06:19 2014 -0700 ---------------------------------------------------------------------- .../org/apache/oozie/service/JPAService.java | 33 +++++++++++++++ .../util/db/InstrumentedBasicDataSource.java | 44 -------------------- .../src/main/resources/META-INF/persistence.xml | 12 +++--- release-log.txt | 1 + 4 files changed, 40 insertions(+), 50 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/2a85bfe2/core/src/main/java/org/apache/oozie/service/JPAService.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/service/JPAService.java b/core/src/main/java/org/apache/oozie/service/JPAService.java index aba8709..1b8f53e 100644 --- a/core/src/main/java/org/apache/oozie/service/JPAService.java +++ b/core/src/main/java/org/apache/oozie/service/JPAService.java @@ -30,6 +30,7 @@ import javax.persistence.Persistence; import javax.persistence.PersistenceException; import javax.persistence.Query; +import org.apache.commons.dbcp.BasicDataSource; import org.apache.hadoop.conf.Configuration; import org.apache.oozie.BundleActionBean; import org.apache.oozie.BundleJobBean; @@ -51,6 +52,7 @@ import org.apache.oozie.util.IOUtils; import org.apache.oozie.util.Instrumentable; import org.apache.oozie.util.Instrumentation; import org.apache.oozie.util.XLog; +import org.apache.openjpa.lib.jdbc.DecoratingDataSource; import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI; /** @@ -94,6 +96,37 @@ public class JPAService implements Service, Instrumentable { @Override public void instrument(Instrumentation instr) { this.instr = instr; + + final BasicDataSource dataSource = getBasicDataSource(); + if (dataSource != null) { + instr.addSampler("jdbc", "connections.active", 60, 1, new Instrumentation.Variable<Long>() { + @Override + public Long getValue() { + return (long) dataSource.getNumActive(); + } + }); + instr.addSampler("jdbc", "connections.idle", 60, 1, new Instrumentation.Variable<Long>() { + @Override + public Long getValue() { + return (long) dataSource.getNumIdle(); + } + }); + } + } + + private BasicDataSource getBasicDataSource() { + // Get the BasicDataSource object; it could be wrapped in a DecoratingDataSource + // It might also not be a BasicDataSource if the user configured something different + BasicDataSource basicDataSource = null; + OpenJPAEntityManagerFactorySPI spi = (OpenJPAEntityManagerFactorySPI) factory; + Object connectionFactory = spi.getConfiguration().getConnectionFactory(); + if (connectionFactory instanceof DecoratingDataSource) { + DecoratingDataSource decoratingDataSource = (DecoratingDataSource) connectionFactory; + basicDataSource = (BasicDataSource) decoratingDataSource.getInnermostDelegate(); + } else if (connectionFactory instanceof BasicDataSource) { + basicDataSource = (BasicDataSource) connectionFactory; + } + return basicDataSource; } /** http://git-wip-us.apache.org/repos/asf/oozie/blob/2a85bfe2/core/src/main/java/org/apache/oozie/util/db/InstrumentedBasicDataSource.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/oozie/util/db/InstrumentedBasicDataSource.java b/core/src/main/java/org/apache/oozie/util/db/InstrumentedBasicDataSource.java deleted file mode 100644 index 2705704..0000000 --- a/core/src/main/java/org/apache/oozie/util/db/InstrumentedBasicDataSource.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * 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.oozie.util.db; - -import org.apache.commons.dbcp.BasicDataSource; -import org.apache.oozie.service.InstrumentationService; -import org.apache.oozie.service.Services; -import org.apache.oozie.util.Instrumentation; - -public class InstrumentedBasicDataSource extends BasicDataSource { - public static final String INSTR_GROUP = "jdbc"; - public static final String INSTR_NAME = "connections.active"; - - /** - * The created datasource instruments the active DB connections. - */ - public InstrumentedBasicDataSource() { - InstrumentationService instrumentationService = Services.get().get(InstrumentationService.class); - if (instrumentationService != null) { - Instrumentation instr = instrumentationService.get(); - instr.addSampler(INSTR_GROUP, INSTR_NAME, 60, 1, new Instrumentation.Variable<Long>() { - public Long getValue() { - return (long) getNumActive(); - } - }); - } - } - -} http://git-wip-us.apache.org/repos/asf/oozie/blob/2a85bfe2/core/src/main/resources/META-INF/persistence.xml ---------------------------------------------------------------------- diff --git a/core/src/main/resources/META-INF/persistence.xml b/core/src/main/resources/META-INF/persistence.xml index a9b79f4..edda2d5 100644 --- a/core/src/main/resources/META-INF/persistence.xml +++ b/core/src/main/resources/META-INF/persistence.xml @@ -43,7 +43,7 @@ <class>org.apache.oozie.util.db.ValidateConnectionBean</class> <properties> - <property name="openjpa.ConnectionDriverName" value="org.apache.oozie.util.db.InstrumentedBasicDataSource"/> + <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource"/> <property name="openjpa.ConnectionProperties" value="**INVALID**"/> <!--Set by StoreService at init time --> @@ -102,7 +102,7 @@ <class>org.apache.oozie.util.db.ValidateConnectionBean</class> <properties> - <property name="openjpa.ConnectionDriverName" value="org.apache.oozie.util.db.InstrumentedBasicDataSource"/> + <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource"/> <property name="openjpa.ConnectionProperties" value="**INVALID**"/> <!--Set by StoreService at init time --> @@ -163,7 +163,7 @@ <class>org.apache.oozie.util.db.ValidateConnectionBean</class> <properties> - <property name="openjpa.ConnectionDriverName" value="org.apache.oozie.util.db.InstrumentedBasicDataSource"/> + <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource"/> <property name="openjpa.ConnectionProperties" value="**INVALID**"/> <!--Set by StoreService at init time --> @@ -222,7 +222,7 @@ <class>org.apache.oozie.util.db.ValidateConnectionBean</class> <properties> - <property name="openjpa.ConnectionDriverName" value="org.apache.oozie.util.db.InstrumentedBasicDataSource"/> + <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource"/> <property name="openjpa.ConnectionProperties" value="**INVALID**"/> <!--Set by StoreService at init time --> @@ -282,7 +282,7 @@ <class>org.apache.oozie.util.db.ValidateConnectionBean</class> <properties> - <property name="openjpa.ConnectionDriverName" value="org.apache.oozie.util.db.InstrumentedBasicDataSource"/> + <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource"/> <property name="openjpa.ConnectionProperties" value="**INVALID**"/> <!--Set by StoreService at init time --> @@ -342,7 +342,7 @@ <class>org.apache.oozie.util.db.ValidateConnectionBean</class> <properties> - <property name="openjpa.ConnectionDriverName" value="org.apache.oozie.util.db.InstrumentedBasicDataSource"/> + <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource"/> <property name="openjpa.ConnectionProperties" value="**INVALID**"/> <!--Set by StoreService at init time --> http://git-wip-us.apache.org/repos/asf/oozie/blob/2a85bfe2/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index 04cc79a..008c089 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 4.1.0 release (trunk - unreleased) +OOZIE-1838 jdbc.connections.active sampler does not show up (rkanter) OOZIE-1801 ZKLocksService instrumentation should say how many locks this server has (rkanter) OOZIE-1819 Avoid early queueing of CoordActionInputCheckXCommand (shwethags via rohini) OOZIE-1783 Sharelib purging only occurs at Oozie startup (rkanter)
