hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Chao Sun (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HDFS-14346) Better time precision in getTimeDuration
Date Wed, 13 Mar 2019 16:05:00 GMT

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

Chao Sun commented on HDFS-14346:
---------------------------------

Thanks [~xkrogen]. Attached patch v2 to address the checkstyle issues.

> Better time precision in getTimeDuration
> ----------------------------------------
>
>                 Key: HDFS-14346
>                 URL: https://issues.apache.org/jira/browse/HDFS-14346
>             Project: Hadoop HDFS
>          Issue Type: Improvement
>          Components: namenode
>            Reporter: Chao Sun
>            Assignee: Chao Sun
>            Priority: Minor
>         Attachments: HDFS-14346.000.patch, HDFS-14346.001.patch, HDFS-14346.002.patch
>
>
> Currently, {{Configuration#getTimeDuration}} has the following signature:
> {code}
>   /**
>    * Return time duration in the given time unit. Valid units are encoded in
>    * properties as suffixes: nanoseconds (ns), microseconds (us), milliseconds
>    * (ms), seconds (s), minutes (m), hours (h), and days (d).
>    * @param name Property name
>    * @param defaultValue Value returned if no mapping exists.
>    * @param unit Unit to convert the stored property, if it exists.
>    * @throws NumberFormatException If the property stripped of its unit is not
>    *         a number
>    */
>   public long getTimeDuration(String name, long defaultValue, TimeUnit unit)
> {code}
> This may lose precision in case the default time unit is larger than the time unit that
the configuration value is converted to in the call sites of this method. For instance, in
{{EditLogTailer}} this method is used in the following manner:
> {code}
>     logRollPeriodMs = conf.getTimeDuration(
>         DFSConfigKeys.DFS_HA_LOGROLL_PERIOD_KEY,
>         DFSConfigKeys.DFS_HA_LOGROLL_PERIOD_DEFAULT, TimeUnit.SECONDS) * 1000;
>     sleepTimeMs = conf.getTimeDuration(
>         DFSConfigKeys.DFS_HA_TAILEDITS_PERIOD_KEY,
>         DFSConfigKeys.DFS_HA_TAILEDITS_PERIOD_DEFAULT, TimeUnit.SECONDS) * 1000;
> {code}
> in both cases, the default time unit is second, and the configuration value is converted
into milli-seconds. Precision is lost when people want to specify sub-second time duration
such as {{100ms}}, which will be converted to {{0ms}}.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-help@hadoop.apache.org


Mime
View raw message