drill-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DRILL-4654) Expose New System Metrics
Date Tue, 17 May 2016 20:29:13 GMT

    [ https://issues.apache.org/jira/browse/DRILL-4654?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15287498#comment-15287498
] 

ASF GitHub Bot commented on DRILL-4654:
---------------------------------------

Github user sudheeshkatkam commented on a diff in the pull request:

    https://github.com/apache/drill/pull/495#discussion_r63597486
  
    --- Diff: common/src/main/java/org/apache/drill/exec/util/SystemPropertyUtil.java ---
    @@ -0,0 +1,189 @@
    +/**
    + * 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.drill.exec.util;
    +
    +import java.security.AccessController;
    +import java.security.PrivilegedAction;
    +import java.util.regex.Pattern;
    +
    +/**
    + * A collection of utility methods to retrieve and parse the values of Java system properties.
    + *
    + * This is a modified version of Netty's internal system property utility class.
    + */
    +public final class SystemPropertyUtil {
    +  private static final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(SystemPropertyUtil.class);
    +
    +  private static final Pattern INTEGER_PATTERN = Pattern.compile("-?[0-9]+");
    +
    +  /**
    +   * Returns {@code true} if and only if the system property with the specified {@code
key}
    +   * exists.
    +   */
    +  public static boolean contains(String key) {
    +    return get(key) != null;
    +  }
    +
    +  /**
    +   * Returns the value of the Java system property with the specified
    +   * {@code key}, while falling back to {@code null} if the property access fails.
    +   *
    +   * @return the property value or {@code null}
    +   */
    +  public static String get(String key) {
    +    return get(key, null);
    +  }
    +
    +  /**
    +   * Returns the value of the Java system property with the specified
    +   * {@code key}, while falling back to the specified default value if
    +   * the property access fails.
    +   *
    +   * @return the property value.
    +   *         {@code def} if there's no such property or if an access to the
    +   *         specified property is not allowed.
    +   */
    +  public static String get(final String key, String def) {
    +    if (key == null) {
    +      throw new NullPointerException("key");
    +    }
    +    if (key.isEmpty()) {
    +      throw new IllegalArgumentException("key must not be empty.");
    +    }
    +
    +    String value = null;
    +    try {
    +      if (System.getSecurityManager() == null) {
    +        value = System.getProperty(key);
    +      } else {
    +        value = AccessController.doPrivileged(new PrivilegedAction<String>() {
    +          @Override
    +          public String run() {
    +            return System.getProperty(key);
    +          }
    +        });
    +      }
    +    } catch (Exception e) {
    +        logger.warn("Unable to retrieve a system property '" + key + "'; default values
will be used.", e);
    +    }
    +
    +    if (value == null) {
    +      return def;
    +    }
    +
    +    return value;
    +  }
    +
    +  /**
    +   * Returns the value of the Java system property with the specified
    +   * {@code key}, while falling back to the specified default value if
    +   * the property access fails.
    +   *
    +   * @return the property value.
    +   *         {@code def} if there's no such property or if an access to the
    +   *         specified property is not allowed.
    +   */
    +  public static boolean getBoolean(String key, boolean def) {
    +    String value = get(key);
    +    if (value == null) {
    +      return def;
    +    }
    +
    +    value = value.trim().toLowerCase();
    +    if (value.isEmpty()) {
    +      return true;
    +    }
    +
    +    if ("true".equals(value) || "yes".equals(value) || "1".equals(value)) {
    +      return true;
    +    }
    +
    +    if ("false".equals(value) || "no".equals(value) || "0".equals(value)) {
    +      return false;
    +    }
    +
    +    logger.warn("Unable to parse the boolean system property '{}':{} - using the default
value: {}",
    +        key, value, def);
    +
    +    return def;
    +  }
    +
    +  /**
    +   * Returns the value of the Java system property with the specified
    +   * {@code key}, while falling back to the specified default value if
    +   * the property access fails.
    +   *
    +   * @return the property value.
    +   *         {@code def} if there's no such property or if an access to the
    +   *         specified property is not allowed.
    +   */
    +  public static int getInt(String key, int def) {
    +    String value = get(key);
    +    if (value == null) {
    +      return def;
    +    }
    +
    +    value = value.trim().toLowerCase();
    +    if (INTEGER_PATTERN.matcher(value).matches()) {
    --- End diff --
    
    I am not sure why the pattern matcher was in place. The difference I see is "+1729" is
allowed by `Integer.parseInt(...)` but not this matcher.


> Expose New System Metrics
> -------------------------
>
>                 Key: DRILL-4654
>                 URL: https://issues.apache.org/jira/browse/DRILL-4654
>             Project: Apache Drill
>          Issue Type: Improvement
>            Reporter: Sudheesh Katkam
>            Assignee: Sudheesh Katkam
>             Fix For: 1.8.0
>
>
> + Add more metrics to the DrillMetrics registry (exposed through web UI and jconsole,
through JMX): pending queries, running queries, completed queries, current memory usage (root
allocator)
> + Clean up and document metric registration API
> + Deprecate getMetrics() method in contextual objects; use DrillMetrics.getRegistry()
directly
> + Make JMX reporting and log reporting configurable through system properties (since
config file is not meant to be used in common module)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message