@@ -353,6 +353,15 @@ public Result execute(Request kvRequest) {
353353 /* clear any retry stats that may exist on this request object */
354354 kvRequest .setRetryStats (null );
355355
356+ /*
357+ * If the request doesn't set an explicit compartment, use
358+ * the config default if provided.
359+ */
360+ if (kvRequest .getCompartment () == null ) {
361+ kvRequest .setCompartmentInternal (
362+ config .getDefaultCompartment ());
363+ }
364+
356365 int rateDelayedMs = 0 ;
357366 boolean checkReadUnits = false ;
358367 boolean checkWriteUnits = false ;
@@ -376,7 +385,8 @@ public Result execute(Request kvRequest) {
376385 writeLimiter = rateLimiterMap .getWriteLimiter (tableName );
377386 if (readLimiter == null && writeLimiter == null ) {
378387 if (kvRequest .doesReads () || kvRequest .doesWrites ()) {
379- backgroundUpdateLimiters (tableName );
388+ backgroundUpdateLimiters (tableName ,
389+ kvRequest .getCompartment ());
380390 }
381391 } else {
382392 checkReadUnits = kvRequest .doesReads ();
@@ -499,14 +509,6 @@ public Result execute(Request kvRequest) {
499509 .add (REQUEST_ID_HEADER , requestId )
500510 .setInt (CONTENT_LENGTH , contentLength );
501511
502- /*
503- * If the request doesn't set an explicit compartment, use
504- * the config default if provided.
505- */
506- if (kvRequest .getCompartment () == null ) {
507- kvRequest .setCompartmentInternal (
508- config .getDefaultCompartment ());
509- }
510512 authProvider .setRequiredHeaders (authString , kvRequest , headers );
511513
512514 if (isLoggable (logger , Level .FINE )) {
@@ -1020,14 +1022,17 @@ private void setTableNeedsRefresh(String tableName, boolean needsRefresh) {
10201022 * Query table limits and create rate limiters for a table in a
10211023 * short-lived background thread.
10221024 */
1023- private synchronized void backgroundUpdateLimiters (String tableName ) {
1025+ private synchronized void backgroundUpdateLimiters (String tableName ,
1026+ String compartmentId ) {
10241027 if (tableNeedsRefresh (tableName ) == false ) {
10251028 return ;
10261029 }
10271030 setTableNeedsRefresh (tableName , false );
10281031
10291032 try {
1030- threadPool .execute (() -> {updateTableLimiters (tableName );});
1033+ threadPool .execute (() -> {
1034+ updateTableLimiters (tableName , compartmentId );
1035+ });
10311036 } catch (RejectedExecutionException e ) {
10321037 setTableNeedsRefresh (tableName , true );
10331038 }
@@ -1036,10 +1041,11 @@ private synchronized void backgroundUpdateLimiters(String tableName) {
10361041 /*
10371042 * This is meant to be run in a background thread
10381043 */
1039- private void updateTableLimiters (String tableName ) {
1044+ private void updateTableLimiters (String tableName , String compartmentId ) {
10401045
10411046 GetTableRequest gtr = new GetTableRequest ()
10421047 .setTableName (tableName )
1048+ .setCompartment (compartmentId )
10431049 .setTimeout (1000 );
10441050 TableResult res = null ;
10451051 try {
0 commit comments