[
https://issues.apache.org/jira/browse/HDFS-16959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17704909#comment-17704909
]
ASF GitHub Bot commented on HDFS-16959:
---------------------------------------
ayushtkn commented on code in PR #5497:
URL: https://github.com/apache/hadoop/pull/5497#discussion_r1148330831
##########
hadoop-hdfs-project/hadoop-hdfs-rbf/src/test/java/org/apache/hadoop/hdfs/server/federation/store/driver/TestStateStoreDriverBase.java:
##########
@@ -574,6 +580,38 @@ private static Map<String, Class<?>> getFields(BaseRecord
record) {
return getters;
}
+ public long getMountTableCacheLoadSamples(StateStoreDriver driver) throws
IOException {
+ final MutableRate mountTableCache = getMountTableCache(driver);
+ return mountTableCache.lastStat().numSamples();
+ }
+
+ private static MutableRate getMountTableCache(StateStoreDriver driver)
throws IOException {
+ StateStoreMetrics metrics = stateStore.getMetrics();
+ final Query<MountTable> query = new Query<>(MountTable.newInstance());
+ driver.getMultiple(MountTable.class, query);
+ final Map<String, MutableRate> cacheLoadMetrics =
metrics.getCacheLoadMetrics();
+ final MutableRate mountTableCache =
cacheLoadMetrics.get("CacheMountTableLoad");
+ assertNotNull("CacheMountTableLoad should be present in the state store
metrics",
+ mountTableCache);
+ return mountTableCache;
+ }
+
+ public void testCacheLoadMetrics(StateStoreDriver driver, long numRefresh)
+ throws IOException, IllegalArgumentException {
+ final MutableRate mountTableCache = getMountTableCache(driver);
+ // CacheMountTableLoadNumOps
+ final long mountTableCacheLoadNumOps =
getMountTableCacheLoadSamples(driver);
+ assertEquals("Num of samples collected should match", numRefresh,
mountTableCacheLoadNumOps);
+ // CacheMountTableLoadAvgTime ms
+ final double mountTableCacheLoadAvgTimeMs =
mountTableCache.lastStat().mean();
+ // 2 seconds is a high enough value for the test, hence we expect mount
table cache
+ // with very few entries to be loaded by this time duration, hence not
have this test result
+ // show flaky behavior.
+ assertTrue(
+ "Mean time duration for cache load is expected to be less than 2000
ms. Actual value: "
+ + mountTableCacheLoadAvgTimeMs, mountTableCacheLoadAvgTimeMs <
2000d);
+ }
Review Comment:
If it more than 0, your metrics is getting captured and propogated, we are
fine with that
if I debug this test, it would fail only here, moreover why introduce a
scope of a flaky test which can be dodged
> RBF: State store cache loading metrics
> --------------------------------------
>
> Key: HDFS-16959
> URL: https://issues.apache.org/jira/browse/HDFS-16959
> Project: Hadoop HDFS
> Issue Type: Improvement
> Reporter: Viraj Jasani
> Assignee: Viraj Jasani
> Priority: Major
> Labels: pull-request-available
>
> With increasing num of state store records (like mount points), it would be
> good to be able to get the cache loading metrics like avg time for cache load
> during refresh, num of times cache is loaded etc.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]