LENS-479 : Add server state persisting error counter (Yash Sharma via amareshwari)
Project: http://git-wip-us.apache.org/repos/asf/incubator-lens/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-lens/commit/fa83c481 Tree: http://git-wip-us.apache.org/repos/asf/incubator-lens/tree/fa83c481 Diff: http://git-wip-us.apache.org/repos/asf/incubator-lens/diff/fa83c481 Branch: refs/heads/current-release-line Commit: fa83c481e5b20dfc798e7487380baa8f77a55b4f Parents: 85da8c8 Author: Yash Sharma <[email protected]> Authored: Wed Jun 3 15:46:13 2015 +0530 Committer: Amareshwari Sriramadasu <[email protected]> Committed: Wed Jun 3 15:46:13 2015 +0530 ---------------------------------------------------------------------- .../lens/server/api/metrics/MetricsService.java | 2 + .../org/apache/lens/server/LensServices.java | 42 ++++++++++++++++++++ .../lens/server/metrics/MetricsServiceImpl.java | 19 +++++++-- 3 files changed, 59 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/fa83c481/lens-server-api/src/main/java/org/apache/lens/server/api/metrics/MetricsService.java ---------------------------------------------------------------------- diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/metrics/MetricsService.java b/lens-server-api/src/main/java/org/apache/lens/server/api/metrics/MetricsService.java index 9cfb65d..ffde912 100644 --- a/lens-server-api/src/main/java/org/apache/lens/server/api/metrics/MetricsService.java +++ b/lens-server-api/src/main/java/org/apache/lens/server/api/metrics/MetricsService.java @@ -149,6 +149,8 @@ public interface MetricsService { long getTotalFailedQueries(); + long getTotalServerStatePersistenceErrors(); + /** * Publish report. */ http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/fa83c481/lens-server/src/main/java/org/apache/lens/server/LensServices.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/LensServices.java b/lens-server/src/main/java/org/apache/lens/server/LensServices.java index ab197ab..c27717f 100644 --- a/lens-server/src/main/java/org/apache/lens/server/LensServices.java +++ b/lens-server/src/main/java/org/apache/lens/server/LensServices.java @@ -98,6 +98,16 @@ public class LensServices extends CompositeService implements ServiceProvider { /** The snap shot interval. */ private long snapShotInterval; + /** + * The metrics service. + */ + private MetricsService metricsService; + + /** + * The Constant SERVER_STATE_PERSISTENCE_ERRORS. + */ + public static final String SERVER_STATE_PERSISTENCE_ERRORS = "total-server-state-persistence-errors"; + /** The service mode. */ @Getter @Setter @@ -116,6 +126,24 @@ public class LensServices extends CompositeService implements ServiceProvider { private final LogSegregationContext logSegregationContext; /** + * Incr counter. + * + * @param counter the counter + */ + private void incrCounter(String counter) { + getMetricService().incrCounter(LensServices.class, counter); + } + + /** + * Gets counter value. + * + * @param counter the counter + */ + private long getCounter(String counter) { + return getMetricService().getCounter(LensServices.class, counter); + } + + /** * The Enum SERVICE_MODE. */ public enum SERVICE_MODE { @@ -257,6 +285,7 @@ public class LensServices extends CompositeService implements ServiceProvider { persistLensServiceState(); LOG.info("SnapShot of Lens Services created"); } catch (IOException e) { + incrCounter(SERVER_STATE_PERSISTENCE_ERRORS); LOG.warn("Unable to persist lens server state", e); } } @@ -326,6 +355,7 @@ public class LensServices extends CompositeService implements ServiceProvider { } } if (!persistenceFS.rename(serviceWritePath, servicePath)) { + incrCounter(SERVER_STATE_PERSISTENCE_ERRORS); LOG.error("Failed to persist " + service.getName() + " to [" + servicePath + "]"); } else { LOG.info("Persisted service " + service.getName() + " to [" + servicePath + "]"); @@ -372,6 +402,7 @@ public class LensServices extends CompositeService implements ServiceProvider { persistenceFS.close(); LOG.info("Persistence File system object close complete"); } catch (IOException e) { + incrCounter(SERVER_STATE_PERSISTENCE_ERRORS); LOG.error("Could not persist server state", e); throw new IllegalStateException(e); } finally { @@ -419,4 +450,15 @@ public class LensServices extends CompositeService implements ServiceProvider { throw new RuntimeException("Could not create error collection.", e); } } + + + private MetricsService getMetricService() { + if (metricsService == null) { + metricsService = (MetricsService) LensServices.get().getService(MetricsService.NAME); + if (metricsService == null) { + throw new NullPointerException("Could not get metrics service"); + } + } + return metricsService; + } } http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/fa83c481/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java ---------------------------------------------------------------------- diff --git a/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java b/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java index 6e8b3a6..66beeed 100644 --- a/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java +++ b/lens-server/src/main/java/org/apache/lens/server/metrics/MetricsServiceImpl.java @@ -96,6 +96,9 @@ public class MetricsServiceImpl extends AbstractService implements MetricsServic /** The total expired sessions*/ private Counter totalExpiredSessions; + /** The total errors while persisting server state */ + private Counter totalServerStatePersistenceErrors; + /** The total accepted queries. */ private Counter totalAcceptedQueries; @@ -355,6 +358,9 @@ public class MetricsServiceImpl extends AbstractService implements MetricsServic totalExpiredSessions = metricRegistry.counter(MetricRegistry.name(QueryExecutionService.class, "total-" + EXPIRED_SESSIONS)); + totalServerStatePersistenceErrors = metricRegistry.counter(MetricRegistry.name(LensServices.class, + LensServices.SERVER_STATE_PERSISTENCE_ERRORS)); + metricRegistry.register("gc", new GarbageCollectorMetricSet()); metricRegistry.register("memory", new MemoryUsageGaugeSet()); metricRegistry.register("threads", new ThreadStatesGaugeSet()); @@ -534,11 +540,16 @@ public class MetricsServiceImpl extends AbstractService implements MetricsServic return totalExpiredSessions.getCount(); } + @Override + public long getTotalServerStatePersistenceErrors() { + return totalServerStatePersistenceErrors.getCount(); + } + /* - * (non-Javadoc) - * - * @see org.apache.lens.server.api.metrics.MetricsService#publishReport() - */ + * (non-Javadoc) + * + * @see org.apache.lens.server.api.metrics.MetricsService#publishReport() + */ @Override public void publishReport() { if (reporters != null) {
