Skip to content

Commit 09102c8

Browse files
committed
Updated internal rate limiter processing to work properly with Instance Principals
1 parent 19965c9 commit 09102c8

File tree

2 files changed

+28
-13
lines changed

2 files changed

+28
-13
lines changed

CHANGELOG.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,19 @@ All notable changes to this project will be documented in this file.
33

44
The format is based on [Keep a Changelog](http://keepachangelog.com/).
55

6+
## [Unreleased]
7+
8+
### Changed
9+
- Updated copyrights to 2022
10+
11+
### Fixed
12+
- Cloud only: Updated internal rate limiter processing to work
13+
properly with Instance Principals
14+
615
## [5.2.30] 2022-01-21
716

817
### Changed
9-
- Updated OCI regions
18+
- Cloud only: Updated OCI regions
1019

1120
### Added
1221
- Added client statistics. Users can enable internal driver statistics by

driver/src/main/java/oracle/nosql/driver/http/Client.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)