You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sentry.apache.org by an...@apache.org on 2016/06/15 20:34:57 UTC
sentry git commit: SENTRY-1319: Add metrics for isActive and isHA (
Rahul Sharma, reviewed by Colin Patrick McCabe, Sravya Tirukkovalur,
Hao Hao and Anne Yu)
Repository: sentry
Updated Branches:
refs/heads/sentry-ha-redesign 38098b461 -> 81990992b
SENTRY-1319: Add metrics for isActive and isHA ( Rahul Sharma, reviewed by Colin Patrick McCabe, Sravya Tirukkovalur, Hao Hao and Anne Yu)
Project: http://git-wip-us.apache.org/repos/asf/sentry/repo
Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/81990992
Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/81990992
Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/81990992
Branch: refs/heads/sentry-ha-redesign
Commit: 81990992b42690ed064564fc67aa7c6c840a9b46
Parents: 38098b4
Author: Anne Yu <an...@cloudera.com>
Authored: Wed Jun 15 14:07:14 2016 -0700
Committer: Anne Yu <an...@cloudera.com>
Committed: Wed Jun 15 14:07:14 2016 -0700
----------------------------------------------------------------------
.../db/service/thrift/SentryMetrics.java | 9 +++
.../sentry/service/thrift/SentryService.java | 33 +++++++++++
.../thrift/TestSentryServiceMetrics.java | 58 ++++++++++++++++++++
.../tests/e2e/hdfs/TestHDFSIntegration.java | 1 +
4 files changed, 101 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sentry/blob/81990992/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryMetrics.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryMetrics.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryMetrics.java
index c6d4d02..19d6ebb 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryMetrics.java
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryMetrics.java
@@ -31,6 +31,7 @@ import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
import com.codahale.metrics.jvm.ThreadStatesGaugeSet;
import org.apache.sentry.provider.db.service.persistent.SentryStore;
+import org.apache.sentry.service.thrift.SentryService;
import java.lang.management.ManagementFactory;
import java.util.Map;
@@ -43,6 +44,7 @@ public final class SentryMetrics {
private static SentryMetrics sentryMetrics = null;
private boolean reportingInitialized = false;
private boolean gaugesAdded = false;
+ private boolean sentryServiceGaugesAdded = false;
public final Timer createRoleTimer = SentryMetricsServletContextListener.METRIC_REGISTRY.timer(
MetricRegistry.name(SentryPolicyStoreProcessor.class, "create-role"));
@@ -116,6 +118,13 @@ public final class SentryMetrics {
}
}
+ public void addSentryServiceGauges(SentryService sentryservice) {
+ if(!sentryServiceGaugesAdded) {
+ addGauge(SentryService.class, "is_active", sentryservice.getIsActiveGauge());
+ addGauge(SentryService.class, "is_ha", sentryservice.getIsHAGauge());
+ sentryServiceGaugesAdded = true;
+ }
+ }
/* Should be only called once to initialize the reporters
*/
http://git-wip-us.apache.org/repos/asf/sentry/blob/81990992/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/service/thrift/SentryService.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/service/thrift/SentryService.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/service/thrift/SentryService.java
index 5783649..6883bf4 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/service/thrift/SentryService.java
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/service/thrift/SentryService.java
@@ -37,6 +37,7 @@ import java.util.concurrent.ThreadFactory;
import javax.security.auth.Subject;
+import com.codahale.metrics.Gauge;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.GnuParser;
@@ -49,6 +50,7 @@ import org.apache.hadoop.security.SaslRpcServer.AuthMethod;
import org.apache.hadoop.security.SecurityUtil;
import org.apache.sentry.Command;
import org.apache.sentry.provider.db.service.thrift.SentryHealthCheckServletContextListener;
+import org.apache.sentry.provider.db.service.thrift.SentryMetrics;
import org.apache.sentry.provider.db.service.thrift.SentryMetricsServletContextListener;
import org.apache.sentry.provider.db.service.thrift.SentryWebServer;
import org.apache.sentry.service.thrift.ServiceConstants.ConfUtilties;
@@ -92,6 +94,9 @@ public class SentryService implements Callable {
private int webServerPort;
private SentryWebServer sentryWebServer;
private long maxMessageSize;
+ private final boolean isHA;
+ private boolean isActive;
+ SentryMetrics sentryMetrics;
public SentryService(Configuration conf) {
this.conf = conf;
@@ -136,6 +141,10 @@ public class SentryService implements Callable {
principalParts = null;
keytab = null;
}
+ isHA = conf.getBoolean(ServerConfig.SENTRY_HA_ENABLED,
+ ServerConfig.SENTRY_HA_ENABLED_DEFAULT);
+ //setting isActive to true for now, until we have Sentry HA implemented
+ isActive = true;
serviceExecutor = Executors.newSingleThreadExecutor(new ThreadFactory() {
private int count = 0;
@@ -212,6 +221,7 @@ public class SentryService implements Callable {
throw new IllegalStateException(
"Failed to register any processors from " + processorFactories);
}
+ addSentryServiceGauge();
TServerTransport serverTransport = new TServerSocket(address);
TTransportFactory transportFactory = null;
if (kerberos) {
@@ -234,6 +244,11 @@ public class SentryService implements Callable {
thriftServer.serve();
}
+ private void addSentryServiceGauge() {
+ sentryMetrics = SentryMetrics.getInstance();
+ sentryMetrics.addSentryServiceGauges(this);
+ }
+
private void startSentryWebServer() throws Exception{
Boolean sentryReportingEnable = conf.getBoolean(ServerConfig.SENTRY_WEB_ENABLE,
ServerConfig.SENTRY_WEB_ENABLE_DEFAULT);
@@ -423,4 +438,22 @@ public class SentryService implements Callable {
}
return thriftServer.getEventHandler();
}
+
+ public Gauge<Boolean> getIsActiveGauge() {
+ return new Gauge<Boolean>() {
+ @Override
+ public Boolean getValue() {
+ return isActive;
+ }
+ };
+ }
+
+ public Gauge<Boolean> getIsHAGauge() {
+ return new Gauge<Boolean>() {
+ @Override
+ public Boolean getValue() {
+ return isHA;
+ }
+ };
+ }
}
http://git-wip-us.apache.org/repos/asf/sentry/blob/81990992/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/thrift/TestSentryServiceMetrics.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/thrift/TestSentryServiceMetrics.java b/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/thrift/TestSentryServiceMetrics.java
new file mode 100644
index 0000000..441a108
--- /dev/null
+++ b/sentry-provider/sentry-provider-db/src/test/java/org/apache/sentry/provider/db/service/thrift/TestSentryServiceMetrics.java
@@ -0,0 +1,58 @@
+/**
+ * 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 createRequired 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.sentry.provider.db.service.thrift;
+
+import org.apache.sentry.service.thrift.SentryServiceIntegrationBase;
+import org.junit.*;
+
+public class TestSentryServiceMetrics extends SentryServiceIntegrationBase {
+
+ @BeforeClass
+ public static void setup() throws Exception {
+ kerberos = false;
+ beforeSetup();
+ setupConf();
+ startSentryService();
+ afterSetup();
+ }
+
+ //Overriding this method as the tests do not require a client handle
+ @Override
+ @Before
+ public void before() throws Exception {
+
+ }
+ /* SENTRY-1319 */
+ @Test
+ public void testSentryServiceGauges() throws Throwable {
+ //More Cases to be added once Sentry HA is implemented
+
+ //Check for gauges with the server handle.
+ Assert.assertEquals(new Boolean(false),server.getIsHAGauge().getValue());
+ Assert.assertEquals(new Boolean(true),server.getIsActiveGauge().getValue());
+ }
+
+ //Overriding this method as the client handle does not exist.
+ @Override
+ @After
+ public void after() {
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/sentry/blob/81990992/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegration.java
----------------------------------------------------------------------
diff --git a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegration.java b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegration.java
index 1606b6d..f2d74bf 100644
--- a/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegration.java
+++ b/sentry-tests/sentry-tests-hive/src/test/java/org/apache/sentry/tests/e2e/hdfs/TestHDFSIntegration.java
@@ -1723,6 +1723,7 @@ public class TestHDFSIntegration {
conn.close();
}
+
private void loadData(Statement stmt) throws IOException, SQLException {
FSDataOutputStream f1 = miniDFS.getFileSystem().create(new Path("/tmp/f1.txt"));
f1.writeChars("m1d1_t1\n");