[ https://issues.apache.org/jira/browse/HDFS-17309?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17801113#comment-17801113 ]
ASF GitHub Bot commented on HDFS-17309: --------------------------------------- LiuGuH opened a new pull request, #6390: URL: https://github.com/apache/hadoop/pull/6390 <!-- Thanks for sending a pull request! 1. If this is your first time, please read our contributor guidelines: https://cwiki.apache.org/confluence/display/HADOOP/How+To+Contribute 2. Make sure your PR title starts with JIRA issue id, e.g., 'HADOOP-17799. Your PR title ...'. --> ### Description of PR With [HDFS-17116](https://issues.apache.org/jira/browse/HDFS-17116), Router safemode check contidition use monotonicNow(). For code in RouterSafemodeService.periodicInvoke() ``` long now = monotonicNow(); long cacheUpdateTime = stateStore.getCacheUpdateTime(); boolean isCacheStale = (now - cacheUpdateTime) > this.staleInterval; ``` Function monotonicNow() is implemented with System.nanoTime(). System.nanoTime() in javadoc description: ``` This method can only be used to measure elapsed time and is not related to any other notion of system or wall-clock time. The value returned represents nanoseconds since some fixed but arbitrary origin time (perhaps in the future, so values may be negative). ``` The following situation maybe exists : If refreshCaches is not success in the beginning, cacheUpdateTime will be 0 , and now - cacheUpdateTime is arbitrary origin time,so isCacheStale maybe be true or false. > Fix Router Safemode check contidition error > ------------------------------------------- > > Key: HDFS-17309 > URL: https://issues.apache.org/jira/browse/HDFS-17309 > Project: Hadoop HDFS > Issue Type: Bug > Reporter: liuguanghua > Priority: Major > > With HDFS-17116, Router safemode check contidition use monotonicNow(). > For code in RouterSafemodeService.periodicInvoke() > long now = monotonicNow(); > long cacheUpdateTime = stateStore.getCacheUpdateTime(); > boolean isCacheStale = (now - cacheUpdateTime) > this.staleInterval; > > Function monotonicNow() is implemented with System.nanoTime(). > System.nanoTime() in javadoc description: > This method can only be used to measure elapsed time and is not related to > any other notion of system or wall-clock time. The value returned represents > nanoseconds since some fixed but arbitrary origin time (perhaps in the > future, so values may be negative). > > The following situation maybe exists : > If refreshCaches not success in the beginning, cacheUpdateTime will be 0 , > and now - cacheUpdateTime is arbitrary origin time,so isCacheStale maybe be > true or false. -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org