>From Murtadha Hubail <[email protected]>:

Murtadha Hubail has submitted this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17815 )

Change subject: [NO ISSUE][OTH] Configure cached resource ids based on storage 
partitions
......................................................................

[NO ISSUE][OTH] Configure cached resource ids based on storage partitions

- user model changes: no
- storage format changes: no
- interface changes: no

Details:

- To ensure each node has enough cached resource ids to create at least
  one resource per storage partition, configure the cached resource ids
  block size based on the storage partition.

Change-Id: I531fd366168209a132e552306a0f2b667e6e0342
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17815
Integration-Tests: Jenkins <[email protected]>
Tested-by: Jenkins <[email protected]>
Reviewed-by: Ali Alsuliman <[email protected]>
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
M 
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/transaction/GlobalResourceIdFactory.java
M 
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/transaction/GlobalResourceIdFactoryProvider.java
3 files changed, 45 insertions(+), 12 deletions(-)

Approvals:
  Ali Alsuliman: Looks good to me, approved
  Jenkins: Verified; Verified




diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
index 630265c..9e796f2 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
@@ -186,7 +186,8 @@
         cloudProperties = propertiesFactory.newCloudProperties();
         ncExtensionManager = extensionManager;
         componentProvider = new StorageComponentProvider();
-        resourceIdFactory = new 
GlobalResourceIdFactoryProvider(ncServiceContext).createResourceIdFactory();
+        resourceIdFactory = new 
GlobalResourceIdFactoryProvider(ncServiceContext, getResourceIdBlockSize())
+                .createResourceIdFactory();
         persistedResourceRegistry = 
ncServiceContext.getPersistedResourceRegistry();
         cacheManager = new CacheManager();
     }
@@ -677,4 +678,9 @@
     public IPartitionBootstrapper getPartitionBootstrapper() {
         return partitionBootstrapper;
     }
+
+    private int getResourceIdBlockSize() {
+        return isCloudDeployment() ? 
storageProperties.getStoragePartitionsCount()
+                : ncServiceContext.getIoManager().getIODevices().size();
+    }
 }
diff --git 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/transaction/GlobalResourceIdFactory.java
 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/transaction/GlobalResourceIdFactory.java
index 908663f..30877d9 100644
--- 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/transaction/GlobalResourceIdFactory.java
+++ 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/transaction/GlobalResourceIdFactory.java
@@ -41,21 +41,23 @@
 public class GlobalResourceIdFactory implements IResourceIdFactory {

     private static final Logger LOGGER = LogManager.getLogger();
-    private static final int RESOURCE_ID_INITIAL_BLOCK_SIZE = 24;
-    private static final int MAX_BLOCK_SIZE = 35;
     private final INCServiceContext serviceCtx;
-    private final LongPriorityQueue resourceIds =
-            LongPriorityQueues.synchronize(new 
LongArrayFIFOQueue(RESOURCE_ID_INITIAL_BLOCK_SIZE));
+    private final LongPriorityQueue resourceIds;
     private final LinkedBlockingQueue<ResourceIdRequestResponseMessage> 
resourceIdResponseQ;
     private final String nodeId;
-    private volatile boolean reset = false;
+    private final int initialBlockSize;
+    private final int maxBlockSize;
     private int currentBlockSize;
+    private volatile boolean reset = false;

-    public GlobalResourceIdFactory(INCServiceContext serviceCtx) {
+    public GlobalResourceIdFactory(INCServiceContext serviceCtx, int 
initialBlockSize) {
         this.serviceCtx = serviceCtx;
         this.resourceIdResponseQ = new LinkedBlockingQueue<>();
         this.nodeId = serviceCtx.getNodeId();
-        this.currentBlockSize = RESOURCE_ID_INITIAL_BLOCK_SIZE;
+        this.initialBlockSize = initialBlockSize;
+        maxBlockSize = initialBlockSize * 2;
+        currentBlockSize = initialBlockSize;
+        resourceIds = LongPriorityQueues.synchronize(new 
LongArrayFIFOQueue(initialBlockSize));
     }

     public synchronized void addNewIds(ResourceIdRequestResponseMessage 
resourceIdResponse)
@@ -120,8 +122,8 @@
     public synchronized void reset() {
         reset = true;
         currentBlockSize += 1;
-        if (currentBlockSize > MAX_BLOCK_SIZE) {
-            currentBlockSize = RESOURCE_ID_INITIAL_BLOCK_SIZE;
+        if (currentBlockSize > maxBlockSize) {
+            currentBlockSize = initialBlockSize;
         }
         LOGGER.debug("current resource ids block size: {}", currentBlockSize);
     }
diff --git 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/transaction/GlobalResourceIdFactoryProvider.java
 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/transaction/GlobalResourceIdFactoryProvider.java
index d99ea90..aaeeb20 100644
--- 
a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/transaction/GlobalResourceIdFactoryProvider.java
+++ 
b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/transaction/GlobalResourceIdFactoryProvider.java
@@ -23,12 +23,14 @@
 public class GlobalResourceIdFactoryProvider {

     private final INCServiceContext ncServiceCtx;
+    private final int initialBlockSize;

-    public GlobalResourceIdFactoryProvider(INCServiceContext ncServiceCtx) {
+    public GlobalResourceIdFactoryProvider(INCServiceContext ncServiceCtx, int 
initialBlockSize) {
         this.ncServiceCtx = ncServiceCtx;
+        this.initialBlockSize = initialBlockSize;
     }

     public GlobalResourceIdFactory createResourceIdFactory() {
-        return new GlobalResourceIdFactory(ncServiceCtx);
+        return new GlobalResourceIdFactory(ncServiceCtx, initialBlockSize);
     }
 }

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/17815
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I531fd366168209a132e552306a0f2b667e6e0342
Gerrit-Change-Number: 17815
Gerrit-PatchSet: 4
Gerrit-Owner: Murtadha Hubail <[email protected]>
Gerrit-Reviewer: Ali Alsuliman <[email protected]>
Gerrit-Reviewer: Jenkins <[email protected]>
Gerrit-Reviewer: Murtadha Hubail <[email protected]>
Gerrit-MessageType: merged

Reply via email to