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 Tue, 12 Mar 2019 22:40:00 GMT

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

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

Good spot [~xkrogen]. It should be private. I also want to make the old one private but {{NameNode#reconfHeartbeatInterval}}
is using it and it's non-trivial to change that code, so I gave up.

AttachedĀ patch v1.

> 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
>
>
> 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