@@ -95,19 +95,15 @@ public TableEntry refreshMeta(String tableName, ServerRoster serverRoster,
9595 long runtimeMaxWait = tableClient .getRuntimeMaxWait ();
9696 int tableEntryRefreshContinuousFailureCeiling = tableClient
9797 .getTableEntryRefreshContinuousFailureCeiling ();
98- long tableEntryRefreshIntervalBase = tableClient .getTableEntryRefreshIntervalBase ();
99- long tableEntryRefreshIntervalCeiling = tableClient .getTableEntryRefreshIntervalCeiling ();
10098 long tableEntryRefreshLockTimeout = tableClient .getTableEntryRefreshLockTimeout ();
101- long refreshMetaInterval = (long ) (tableEntryRefreshIntervalBase * Math .pow (2 ,
102- -serverRoster .getMaxPriority ()));
103- refreshMetaInterval = Math .min (refreshMetaInterval , tableEntryRefreshIntervalCeiling );
99+ long refreshMetaInterval = getTableLevelRefreshInterval (serverRoster );
104100
105101 TableEntry tableEntry = locations .get (tableName );
106102 // avoid bad contention in high concurrent situation
107103 if (tableEntry != null ) {
108104 long current = System .currentTimeMillis ();
109105 long fetchMetaInterval = current - tableEntry .getRefreshMetaTimeMills ();
110- // if refreshed within 3 seconds , do not refresh
106+ // if refreshed within refreshMetaInterval , do not refresh
111107 if (fetchMetaInterval < refreshMetaInterval ) {
112108 logger
113109 .info (
@@ -150,7 +146,7 @@ public TableEntry refreshMeta(String tableName, ServerRoster serverRoster,
150146 if (tableEntry != null ) {
151147 long current = System .currentTimeMillis ();
152148 long fetchMetaInterval = current - tableEntry .getRefreshMetaTimeMills ();
153- // if refreshed within 100 ms , do not refresh
149+ // if refreshed within refreshMetaInterval , do not refresh
154150 if (fetchMetaInterval < refreshMetaInterval ) {
155151 logger
156152 .info (
@@ -283,6 +279,7 @@ public TableEntry refreshPartitionLocation(TableEntry tableEntry, String tableNa
283279 }
284280 ObPartitionLocationInfo locationInfo = tableEntry .getPartitionEntry ().getPartitionInfo (
285281 tabletId );
282+ long refreshMetaInterval = getTableLevelRefreshInterval (serverRoster );
286283 int tableEntryRefreshContinuousFailureCeiling = tableClient
287284 .getTableEntryRefreshContinuousFailureCeiling ();
288285 long runtimeMaxWait = tableClient .getRuntimeMaxWait ();
@@ -358,10 +355,9 @@ public TableEntry refreshPartitionLocation(TableEntry tableEntry, String tableNa
358355 "schema_version mismatch when refreshing tablet location, old schema_version is: {}" , schemaVersion );
359356 tableEntry = locations .get (tableName );
360357 // sleep over waiting interval of refreshing meta to refresh meta
361- long interval = System .currentTimeMillis ()
362- - tableEntry .getRefreshMetaTimeMills ();
363- if (interval < 100 ) {
364- Thread .sleep (100 - interval );
358+ long interval = System .currentTimeMillis () - tableEntry .getRefreshMetaTimeMills ();
359+ if (interval < refreshMetaInterval ) {
360+ Thread .sleep (refreshMetaInterval - interval );
365361 }
366362 tableEntry = locations .get (tableName );
367363 // if schema_version has been updated, directly retry
@@ -416,13 +412,9 @@ public TableEntry refreshTabletLocationBatch(TableEntry tableEntry, String table
416412 long runtimeMaxWait = tableClient .getRuntimeMaxWait ();
417413 long tableEntryRefreshLockTimeout = tableClient .getTableEntryRefreshLockTimeout ();
418414 long lastRefreshTime = tableEntry .getPartitionEntry ().getLastRefreshAllTime ();
419- long tableEntryRefreshIntervalBase = tableClient .getTableEntryRefreshIntervalBase ();
420- long tableEntryRefreshIntervalCeiling = tableClient .getTableEntryRefreshIntervalCeiling ();
421- long refreshBatchTabletInterval = (long ) (tableEntryRefreshIntervalBase * Math .pow (2 ,
422- -serverRoster .getMaxPriority ()));
423- refreshBatchTabletInterval = Math .min (refreshBatchTabletInterval , tableEntryRefreshIntervalCeiling );
415+ long refreshBatchTabletInterval = getTableLevelRefreshInterval (serverRoster );
424416 long currentTime = System .currentTimeMillis ();
425- // do not refresh tablet location if refreshed within 300 milliseconds
417+ // do not refresh tablet location if refreshed within refreshBatchTabletInterval
426418 if (currentTime - lastRefreshTime < refreshBatchTabletInterval ) {
427419 logger
428420 .info (
@@ -491,8 +483,8 @@ public TableEntry refreshTabletLocationBatch(TableEntry tableEntry, String table
491483 tableEntry = locations .get (tableName );
492484 // sleep over waiting interval of refreshing meta to refresh meta
493485 long interval = System .currentTimeMillis () - tableEntry .getRefreshMetaTimeMills ();
494- if (interval < 100 ) {
495- Thread .sleep (100 - interval );
486+ if (interval < refreshBatchTabletInterval ) {
487+ Thread .sleep (refreshBatchTabletInterval - interval );
496488 }
497489 tableEntry = locations .get (tableName );
498490 // if schema_version has been updated, directly retry
@@ -530,6 +522,15 @@ public TableEntry refreshTabletLocationBatch(TableEntry tableEntry, String table
530522 }
531523 }
532524
525+ private long getTableLevelRefreshInterval (ServerRoster serverRoster ) {
526+ long tableEntryRefreshIntervalBase = tableClient .getTableEntryRefreshIntervalBase ();
527+ long tableEntryRefreshIntervalCeiling = tableClient .getTableEntryRefreshIntervalCeiling ();
528+ long refreshInterval = (long ) (tableEntryRefreshIntervalBase * Math .pow (2 ,
529+ -serverRoster .getMaxPriority ()));
530+ refreshInterval = Math .min (refreshInterval , tableEntryRefreshIntervalCeiling );
531+ return refreshInterval ;
532+ }
533+
533534 /**
534535 * fetch ODP partition meta information
535536 * @param tableName table name to query
0 commit comments