You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@asterixdb.apache.org by "Murtadha Hubail (Code Review)" <do...@asterixdb.incubator.apache.org> on 2017/10/30 17:39:39 UTC

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Murtadha Hubail has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/2112

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................

[ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

- user model changes: no
- storage format changes: no
- interface changes: yes
  Added IDatasetMemoryManager to manage datasets memory
  reservation and allocation.

Details:
- Reserve metadata datasets memory to allow them to be opened
  when needed.
- Close all datasets at the end of recovery to clear
  used memory and flush all recovered datasets.
- Add UngracefulShutdownNCApplication to force recovery
  to run on AsterixHyracksIntegrationUtil.
- Refactor the use of firstAvilableUserDatasetID to check
  for metadata datasets.
- Add ThreadSafe annotation.
- Add test case for RecoveryManager after creating multiple
  datasets.

Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
A asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetMemoryManager.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
A asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
A hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/ThreadSafe.java
14 files changed, 566 insertions(+), 67 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/12/2112/1

diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
index ecf25eb..d423d2d 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
@@ -66,6 +66,7 @@
 
     private static final String DEFAULT_STORAGE_PATH = joinPath("target", "io", "dir");
     private static String storagePath = DEFAULT_STORAGE_PATH;
+    public static boolean gracefulShutdown = true;
     private ConfigManager configManager;
     private List<String> nodeNames;
 
@@ -158,6 +159,9 @@
     }
 
     protected INCApplication createNCApplication() {
+        if (!gracefulShutdown) {
+            return new UngracefulShutdownNCApplication();
+        }
         return new NCApplication();
     }
 
@@ -288,4 +292,11 @@
             Thread.sleep(10000);
         }
     }
+
+    private class UngracefulShutdownNCApplication extends NCApplication {
+        @Override
+        public void stop() throws Exception {
+            // ungraceful shutdown
+        }
+    }
 }
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 5370c03..7b08f68 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
@@ -32,6 +32,7 @@
 import org.apache.asterix.active.ActiveManager;
 import org.apache.asterix.api.common.AppRuntimeContextProviderForRecovery;
 import org.apache.asterix.common.api.IDatasetLifecycleManager;
+import org.apache.asterix.common.api.IDatasetMemoryManager;
 import org.apache.asterix.common.api.INcApplicationContext;
 import org.apache.asterix.common.cluster.ClusterPartition;
 import org.apache.asterix.common.config.ActiveProperties;
@@ -48,11 +49,11 @@
 import org.apache.asterix.common.config.StorageProperties;
 import org.apache.asterix.common.config.TransactionProperties;
 import org.apache.asterix.common.context.DatasetLifecycleManager;
+import org.apache.asterix.common.context.DatasetMemoryManager;
 import org.apache.asterix.common.context.IStorageComponentProvider;
 import org.apache.asterix.common.exceptions.ACIDException;
 import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.common.library.ILibraryManager;
-import org.apache.asterix.common.metadata.MetadataIndexImmutableProperties;
 import org.apache.asterix.common.replication.IRemoteRecoveryManager;
 import org.apache.asterix.common.replication.IReplicaResourcesManager;
 import org.apache.asterix.common.replication.IReplicationChannel;
@@ -119,6 +120,7 @@
     private MessagingProperties messagingProperties;
     private final NodeProperties nodeProperties;
     private ExecutorService threadExecutor;
+    private IDatasetMemoryManager datasetMemoryManager;
     private IDatasetLifecycleManager datasetLifecycleManager;
     private IBufferCache bufferCache;
     private ITransactionSubsystem txnSubsystem;
@@ -198,9 +200,10 @@
             localResourceRepository.deleteStorageData(true);
         }
 
-        datasetLifecycleManager = new DatasetLifecycleManager(storageProperties, localResourceRepository,
-                MetadataIndexImmutableProperties.FIRST_AVAILABLE_USER_DATASET_ID, txnSubsystem.getLogManager(),
-                ioManager.getIODevices().size());
+        datasetMemoryManager = new DatasetMemoryManager(storageProperties);
+        datasetLifecycleManager =
+                new DatasetLifecycleManager(storageProperties, localResourceRepository, txnSubsystem.getLogManager(),
+                        datasetMemoryManager, ioManager.getIODevices().size());
 
         isShuttingdown = false;
 
@@ -316,6 +319,11 @@
     }
 
     @Override
+    public IDatasetMemoryManager getDatasetMemoryManager() {
+        return datasetMemoryManager;
+    }
+
+    @Override
     public double getBloomFilterFalsePositiveRate() {
         return storageProperties.getBloomFilterFalsePositiveRate();
     }
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
index a502de9..7b1834a 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
@@ -401,6 +401,7 @@
             for (long r : resourceIdList) {
                 datasetLifecycleManager.close(resourcesMap.get(r).getPath());
             }
+            datasetLifecycleManager.closeAllDatasets();
         }
     }
 
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
new file mode 100644
index 0000000..6386a54
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.test.txn;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Random;
+
+import org.apache.asterix.api.common.AsterixHyracksIntegrationUtil;
+import org.apache.asterix.common.config.GlobalConfig;
+import org.apache.asterix.common.configuration.AsterixConfiguration;
+import org.apache.asterix.common.configuration.Property;
+import org.apache.asterix.common.utils.Servlets;
+import org.apache.asterix.test.common.TestExecutor;
+import org.apache.asterix.test.common.TestHelper;
+import org.apache.asterix.testframework.context.TestCaseContext;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+public class RecoveryManagerTest {
+
+    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+    private static final String DEFAULT_TEST_CONFIG_FILE_NAME = "asterix-build-configuration.xml";
+    private static final String TEST_CONFIG_FILE_NAME = "asterix-test-configuration.xml";
+    private static final String TEST_CONFIG_PATH =
+            System.getProperty("user.dir") + File.separator + "target" + File.separator + "config";
+    private static final String TEST_CONFIG_FILE_PATH = TEST_CONFIG_PATH + File.separator + TEST_CONFIG_FILE_NAME;
+    private static final TestExecutor testExecutor = new TestExecutor();
+    private static final AsterixHyracksIntegrationUtil integrationUtil = new AsterixHyracksIntegrationUtil();
+    private static final Random random = new Random();
+    private static final int numRecords = 1;
+
+    @Before
+    public void setUp() throws Exception {
+        // Read default test configurations
+        AsterixConfiguration ac = TestHelper.getConfigurations(DEFAULT_TEST_CONFIG_FILE_NAME);
+        // override memory config to enforce dataset eviction
+        ac.getProperty().add(new Property("storage.memorycomponent.globalbudget", String.valueOf("128MB"), ""));
+        ac.getProperty().add(new Property("storage.memorycomponent.numpages", String.valueOf("32"), ""));
+        // Write test config file
+        TestHelper.writeConfigurations(ac, TEST_CONFIG_FILE_PATH);
+        System.setProperty(GlobalConfig.CONFIG_FILE_PROPERTY, TEST_CONFIG_FILE_PATH);
+        integrationUtil.gracefulShutdown = false;
+        integrationUtil.init(true);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        integrationUtil.deinit(true);
+    }
+
+    @Test
+    public void multiDatasetRecovery() throws Exception {
+        String datasetNamePrefix = "ds_";
+        final TestCaseContext.OutputFormat format = TestCaseContext.OutputFormat.CLEAN_JSON;
+        testExecutor.executeSqlppUpdateOrDdl("CREATE TYPE KeyType AS { id: int };", format);
+        int numDatasets = 50;
+        String datasetName = null;
+        for (int i = 1; i <= numDatasets; i++) {
+            datasetName = datasetNamePrefix + i;
+            testExecutor.executeSqlppUpdateOrDdl("CREATE DATASET " + datasetName + "(KeyType) PRIMARY KEY id;", format);
+            insertData(datasetName);
+        }
+        // do ungraceful shutdown to enforce recovery
+        integrationUtil.deinit(false);
+        integrationUtil.init(false);
+        validateRecovery(datasetName);
+
+        // create more datasets after recovery
+        numDatasets = 100;
+        for (int i = 51; i <= numDatasets; i++) {
+            datasetName = datasetNamePrefix + i;
+            testExecutor.executeSqlppUpdateOrDdl("CREATE DATASET " + datasetName + "(KeyType) PRIMARY KEY id;", format);
+            insertData(datasetName);
+        }
+        // do ungraceful shutdown to enforce recovery again
+        integrationUtil.deinit(false);
+        integrationUtil.init(false);
+        validateRecovery(datasetName);
+    }
+
+    private void insertData(String datasetName) throws Exception {
+        for (int i = 0; i < numRecords; i++) {
+            testExecutor.executeSqlppUpdateOrDdl("UPSERT INTO " + datasetName + " ({\"id\": " + random.nextInt() + "})",
+                    TestCaseContext.OutputFormat.CLEAN_JSON);
+        }
+    }
+
+    private void validateRecovery(String datasetName) throws Exception {
+        final String query = "select value count(*) from `" + datasetName + "`;";
+        final InputStream inputStream = testExecutor
+                .executeQueryService(query, testExecutor.getEndpoint(Servlets.QUERY_SERVICE),
+                        TestCaseContext.OutputFormat.CLEAN_JSON);
+        final ObjectNode jsonNodes = OBJECT_MAPPER.readValue(inputStream, ObjectNode.class);
+        JsonNode result = jsonNodes.get("results");
+        // make sure there is result
+        Assert.assertEquals(1, result.size());
+        for (int i = 0; i < result.size(); i++) {
+            JsonNode json = result.get(i);
+            Assert.assertEquals(numRecords, json.asInt());
+        }
+    }
+}
\ No newline at end of file
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetMemoryManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetMemoryManager.java
new file mode 100644
index 0000000..1ae6438
--- /dev/null
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetMemoryManager.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.common.api;
+
+public interface IDatasetMemoryManager {
+
+    /**
+     * Allocates memory for dataset {@code datasetId}.
+     *
+     * @param datasetId
+     * @return true, if the allocation is successful, otherwise false.
+     */
+    boolean allocate(int datasetId);
+
+    /**
+     * Deallocates memory of dataset {@code datasetId}.
+     *
+     * @param datasetId
+     */
+    void deallocate(int datasetId);
+
+    /**
+     * Reserves memory for dataset {@code datasetId}. The reserved memory
+     * is guaranteed to be allocatable when needed for the dataset.
+     *
+     * @param datasetId
+     * @return true, if the allocation is successful, otherwise false.
+     */
+    boolean reserve(int datasetId);
+
+    /**
+     * Cancels the reserved memory for dataset {@code datasetId}.
+     *
+     * @param datasetId
+     */
+    void cancelReserved(int datasetId);
+
+    /**
+     * @return The remaining memory budget that can be used for datasets.
+     */
+    long getAvailable();
+
+    /**
+     * @param datasetId
+     * @return The number of virtual buffer cache pages that should be allocated for dataset {@code datasetId}.
+     */
+    int getNumPages(int datasetId);
+}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
index d4b9a92..548907c 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
@@ -62,6 +62,8 @@
 
     IDatasetLifecycleManager getDatasetLifecycleManager();
 
+    IDatasetMemoryManager getDatasetMemoryManager();
+
     IResourceIdFactory getResourceIdFactory();
 
     ILSMOperationTracker getLSMBTreeOperationTracker(int datasetID);
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
index 545382a..eac479c 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
@@ -29,6 +29,7 @@
 import java.util.logging.Logger;
 
 import org.apache.asterix.common.api.IDatasetLifecycleManager;
+import org.apache.asterix.common.api.IDatasetMemoryManager;
 import org.apache.asterix.common.config.StorageProperties;
 import org.apache.asterix.common.dataflow.DatasetLocalResource;
 import org.apache.asterix.common.exceptions.ACIDException;
@@ -45,33 +46,29 @@
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexAccessor;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMOperationTracker;
 import org.apache.hyracks.storage.am.lsm.common.api.IVirtualBufferCache;
-import org.apache.hyracks.storage.am.lsm.common.impls.AbstractLSMIndex;
 import org.apache.hyracks.storage.common.IIndex;
 import org.apache.hyracks.storage.common.ILocalResourceRepository;
 import org.apache.hyracks.storage.common.LocalResource;
 
 public class DatasetLifecycleManager implements IDatasetLifecycleManager, ILifeCycleComponent {
+
     private static final Logger LOGGER = Logger.getLogger(DatasetLifecycleManager.class.getName());
     private final Map<Integer, DatasetResource> datasets = new ConcurrentHashMap<>();
     private final StorageProperties storageProperties;
     private final ILocalResourceRepository resourceRepository;
-    private final int firstAvilableUserDatasetID;
-    private final long capacity;
-    private long used;
+    private final IDatasetMemoryManager memoryManager;
     private final ILogManager logManager;
     private final LogRecord logRecord;
     private final int numPartitions;
     private volatile boolean stopped = false;
 
     public DatasetLifecycleManager(StorageProperties storageProperties, ILocalResourceRepository resourceRepository,
-            int firstAvilableUserDatasetID, ILogManager logManager, int numPartitions) {
+            ILogManager logManager, IDatasetMemoryManager memoryManager, int numPartitions) {
         this.logManager = logManager;
         this.storageProperties = storageProperties;
         this.resourceRepository = resourceRepository;
-        this.firstAvilableUserDatasetID = firstAvilableUserDatasetID;
+        this.memoryManager = memoryManager;
         this.numPartitions = numPartitions;
-        capacity = storageProperties.getMemoryComponentGlobalBudget();
-        used = 0;
         logRecord = new LogRecord();
     }
 
@@ -200,9 +197,10 @@
         for (DatasetResource dsr : datasetsResources) {
             PrimaryIndexOperationTracker opTracker = dsr.getOpTracker();
             if (opTracker != null && opTracker.getNumActiveOperations() == 0
-                    && dsr.getDatasetInfo().getReferenceCount() == 0 && dsr.getDatasetInfo().isOpen()
-                    && dsr.getDatasetInfo().getDatasetID() >= getFirstAvilableUserDatasetID()) {
+                    && dsr.getDatasetInfo().getReferenceCount() == 0 && dsr.getDatasetInfo().isOpen() && !dsr
+                    .isMetadataDataset()) {
                 closeDataset(dsr.getDatasetInfo());
+                LOGGER.info(() -> "Evicted Dataset" + dsr.getDatasetID());
                 return true;
             }
         }
@@ -230,8 +228,9 @@
             if (dsr == null) {
                 DatasetInfo dsInfo = new DatasetInfo(did);
                 PrimaryIndexOperationTracker opTracker = new PrimaryIndexOperationTracker(did, logManager, dsInfo);
-                DatasetVirtualBufferCaches vbcs = new DatasetVirtualBufferCaches(did, storageProperties,
-                        getFirstAvilableUserDatasetID(), getNumPartitions());
+                DatasetVirtualBufferCaches vbcs =
+                        new DatasetVirtualBufferCaches(did, storageProperties, memoryManager.getNumPages(did),
+                                numPartitions);
                 dsr = new DatasetResource(dsInfo, opTracker, vbcs);
                 datasets.put(did, dsr);
             }
@@ -322,8 +321,7 @@
     }
 
     @Override
-    public synchronized void start() {
-        used = 0;
+    public void start() {
     }
 
     @Override
@@ -350,7 +348,7 @@
                 for (IndexInfo iInfo : dsr.getIndexes().values()) {
                     AbstractLSMIOOperationCallback ioCallback =
                             (AbstractLSMIOOperationCallback) iInfo.getIndex().getIOOperationCallback();
-                    if (!(((AbstractLSMIndex) iInfo.getIndex()).isCurrentMutableComponentEmpty()
+                    if (!(iInfo.getIndex().isCurrentMutableComponentEmpty()
                             || ioCallback.hasPendingFlush() || opTracker.isFlushLogCreated()
                             || opTracker.isFlushOnExit())) {
                         long firstLSN = ioCallback.getFirstLSN();
@@ -449,7 +447,7 @@
     public synchronized void closeUserDatasets() throws HyracksDataException {
         ArrayList<DatasetResource> openDatasets = new ArrayList<>(datasets.values());
         for (DatasetResource dsr : openDatasets) {
-            if (dsr.getDatasetID() >= getFirstAvilableUserDatasetID()) {
+            if (!dsr.isMetadataDataset()) {
                 closeDataset(dsr.getDatasetInfo());
             }
         }
@@ -474,8 +472,8 @@
     public void dumpState(OutputStream outputStream) throws IOException {
         StringBuilder sb = new StringBuilder();
 
-        sb.append(String.format("Memory budget = %d\n", capacity));
-        sb.append(String.format("Memory used = %d\n", used));
+        sb.append(String.format("Memory budget = %d\n", storageProperties.getMemoryComponentGlobalBudget()));
+        sb.append(String.format("Memory available = %d\n", memoryManager.getAvailable()));
         sb.append("\n");
 
         String dsHeaderFormat = "%-10s %-6s %-16s %-12s\n";
@@ -515,7 +513,7 @@
         }
         synchronized (dsInfo) {
             if (dsInfo.isOpen() && dsInfo.isMemoryAllocated()) {
-                used -= getVirtualBufferCaches(dsInfo.getDatasetID()).getTotalSize();
+                memoryManager.deallocate(datasetId);
                 dsInfo.setMemoryAllocated(false);
             }
         }
@@ -534,25 +532,15 @@
         synchronized (dsInfo) {
             // This is not needed for external datasets' indexes since they never use the virtual buffer cache.
             if (!dsInfo.isMemoryAllocated() && !dsInfo.isExternal()) {
-                long additionalSize = getVirtualBufferCaches(dsInfo.getDatasetID()).getTotalSize();
-                while (used + additionalSize > capacity) {
+                while (!memoryManager.allocate(datasetId)) {
                     if (!evictCandidateDataset()) {
                         throw new HyracksDataException("Cannot allocate dataset " + dsInfo.getDatasetID()
                                 + " memory since memory budget would be exceeded.");
                     }
                 }
-                used += additionalSize;
                 dsInfo.setMemoryAllocated(true);
             }
         }
-    }
-
-    public int getFirstAvilableUserDatasetID() {
-        return firstAvilableUserDatasetID;
-    }
-
-    public int getNumPartitions() {
-        return numPartitions;
     }
 
     @Override
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
new file mode 100644
index 0000000..ccce1f1
--- /dev/null
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.common.context;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.logging.Logger;
+
+import org.apache.asterix.common.api.IDatasetMemoryManager;
+import org.apache.asterix.common.config.StorageProperties;
+import org.apache.asterix.common.metadata.MetadataIndexImmutableProperties;
+import org.apache.hyracks.util.annotations.ThreadSafe;
+
+@ThreadSafe
+public class DatasetMemoryManager implements IDatasetMemoryManager {
+
+    private static final Logger LOGGER = Logger.getLogger(DatasetMemoryManager.class.getName());
+    private final Map<Integer, Long> allocatedMap = new ConcurrentHashMap<>();
+    private final Map<Integer, Long> reservedMap = new ConcurrentHashMap<>();
+    private final AtomicLong available;
+    private final StorageProperties storageProperties;
+
+    public DatasetMemoryManager(StorageProperties storageProperties) {
+        this.storageProperties = storageProperties;
+        available = new AtomicLong(storageProperties.getMemoryComponentGlobalBudget());
+    }
+
+    @Override
+    public synchronized boolean allocate(int datasetId) {
+        if (allocatedMap.containsKey(datasetId)) {
+            throw new IllegalStateException("Memory is already allocated for dataset: " + datasetId);
+        }
+        if (reservedMap.containsKey(datasetId)) {
+            allocateReserved(datasetId);
+            return true;
+        }
+        final long required = getTotalSize(datasetId);
+        if (!isAllocatable(required)) {
+            return false;
+        }
+        allocatedMap.put(datasetId, required);
+        available.addAndGet(-required);
+        LOGGER.info(() -> "Allocated(" + required + ") for dataset(" + datasetId + ")");
+        return true;
+    }
+
+    @Override
+    public synchronized void deallocate(int datasetId) {
+        if (!allocatedMap.containsKey(datasetId) && !reservedMap.containsKey(datasetId)) {
+            throw new IllegalStateException("No allocated or reserved memory for dataset: " + datasetId);
+        }
+        final Long allocated = allocatedMap.remove(datasetId);
+        // return the allocated budget if it is not reserved
+        if (allocated != null && !reservedMap.containsKey(datasetId)) {
+            available.addAndGet(allocated);
+            LOGGER.info(() -> "Deallocated(" + allocated + ") from dataset(" + datasetId + ")");
+        }
+    }
+
+    @Override
+    public synchronized boolean reserve(int datasetId) {
+        if (allocatedMap.containsKey(datasetId)) {
+            throw new IllegalStateException("Memory is already allocated for dataset: " + datasetId);
+        }
+        if (reservedMap.containsKey(datasetId)) {
+            throw new IllegalStateException("Memory is already reserved for dataset: " + datasetId);
+        }
+        final long required = getTotalSize(datasetId);
+        if (!isAllocatable(required)) {
+            return false;
+        }
+        reservedMap.put(datasetId, required);
+        available.addAndGet(-required);
+        LOGGER.info(() -> "Reserved(" + required + ") for dataset(" + datasetId + ")");
+        return true;
+    }
+
+    @Override
+    public synchronized void cancelReserved(int datasetId) {
+        final Long reserved = reservedMap.remove(datasetId);
+        if (reserved == null) {
+            throw new IllegalStateException("No reserved memory for dataset: " + datasetId);
+        }
+        available.addAndGet(reserved);
+        LOGGER.info(() -> "Cancelled reserved(" + reserved + ") from dataset(" + datasetId + ")");
+    }
+
+    @Override
+    public long getAvailable() {
+        return available.get();
+    }
+
+    @Override
+    public int getNumPages(int datasetId) {
+        return MetadataIndexImmutableProperties.isMetadataDataset(datasetId) ?
+                storageProperties.getMetadataMemoryComponentNumPages() :
+                storageProperties.getMemoryComponentNumPages();
+    }
+
+    private long getTotalSize(int datasetId) {
+        return storageProperties.getMemoryComponentPageSize() * (long) getNumPages(datasetId);
+    }
+
+    private boolean isAllocatable(long required) {
+        return available.get() - required >= 0;
+    }
+
+    private void allocateReserved(int datasetId) {
+        final Long reserved = reservedMap.get(datasetId);
+        allocatedMap.put(datasetId, reserved);
+    }
+}
\ No newline at end of file
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
index f2f3b93..b59fe6a 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
@@ -21,6 +21,7 @@
 import java.util.Map;
 
 import org.apache.asterix.common.dataflow.DatasetLocalResource;
+import org.apache.asterix.common.metadata.MetadataIndexImmutableProperties;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
 import org.apache.hyracks.storage.common.IIndex;
@@ -141,4 +142,8 @@
     public int getDatasetID() {
         return datasetInfo.getDatasetID();
     }
+
+    public boolean isMetadataDataset() {
+        return MetadataIndexImmutableProperties.isMetadataDataset(getDatasetID());
+    }
 }
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java
index c7eda4d..37a067f 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java
@@ -33,51 +33,38 @@
 public class DatasetVirtualBufferCaches {
     private final int datasetID;
     private final StorageProperties storageProperties;
-    private final int firstAvilableUserDatasetID;
     private final int numPartitions;
+    private final int numPages;
     private final Map<Integer, List<IVirtualBufferCache>> ioDeviceVirtualBufferCaches = new HashMap<>();
 
-    public DatasetVirtualBufferCaches(int datasetID, StorageProperties storageProperties,
-            int firstAvilableUserDatasetID, int numPartitions) {
+    public DatasetVirtualBufferCaches(int datasetID, StorageProperties storageProperties, int numPages, int numPartitions) {
         this.datasetID = datasetID;
         this.storageProperties = storageProperties;
-        this.firstAvilableUserDatasetID = firstAvilableUserDatasetID;
         this.numPartitions = numPartitions;
-    }
-
-    public List<IVirtualBufferCache> initializeVirtualBufferCaches(IResourceMemoryManager memoryManager,
-            int ioDeviceNum) {
-        int numPages = datasetID < firstAvilableUserDatasetID
-                ? storageProperties.getMetadataMemoryComponentNumPages()
-                : storageProperties.getMemoryComponentNumPages();
-        List<IVirtualBufferCache> vbcs = new ArrayList<>();
-        for (int i = 0; i < storageProperties.getMemoryComponentsNum(); i++) {
-            MultitenantVirtualBufferCache vbc = new MultitenantVirtualBufferCache(
-                    new VirtualBufferCache(
-                            new ResourceHeapBufferAllocator(memoryManager,
-                                    Integer.toString(datasetID)),
-                            storageProperties.getMemoryComponentPageSize(),
-                            numPages / storageProperties.getMemoryComponentsNum() / numPartitions));
-            vbcs.add(vbc);
-        }
-        ioDeviceVirtualBufferCaches.put(ioDeviceNum, vbcs);
-        return vbcs;
+        this.numPages = numPages;
     }
 
     public List<IVirtualBufferCache> getVirtualBufferCaches(IResourceMemoryManager memoryManager, int ioDeviceNum) {
         synchronized (ioDeviceVirtualBufferCaches) {
             List<IVirtualBufferCache> vbcs = ioDeviceVirtualBufferCaches.get(ioDeviceNum);
             if (vbcs == null) {
-                vbcs = initializeVirtualBufferCaches(memoryManager, ioDeviceNum);
+                vbcs = initializeVirtualBufferCaches(memoryManager, ioDeviceNum, numPages);
             }
             return vbcs;
         }
     }
 
-    public long getTotalSize() {
-        int numPages = datasetID < firstAvilableUserDatasetID
-                ? storageProperties.getMetadataMemoryComponentNumPages()
-                : storageProperties.getMemoryComponentNumPages();
-        return storageProperties.getMemoryComponentPageSize() * ((long) numPages);
+    private List<IVirtualBufferCache> initializeVirtualBufferCaches(IResourceMemoryManager memoryManager,
+            int ioDeviceNum, int numPages) {
+        List<IVirtualBufferCache> vbcs = new ArrayList<>();
+        for (int i = 0; i < storageProperties.getMemoryComponentsNum(); i++) {
+            MultitenantVirtualBufferCache vbc = new MultitenantVirtualBufferCache(
+                    new VirtualBufferCache(new ResourceHeapBufferAllocator(memoryManager, Integer.toString(datasetID)),
+                            storageProperties.getMemoryComponentPageSize(),
+                            numPages / storageProperties.getMemoryComponentsNum() / numPartitions));
+            vbcs.add(vbc);
+        }
+        ioDeviceVirtualBufferCaches.put(ioDeviceNum, vbcs);
+        return vbcs;
     }
 }
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
index 74589cc..8b4c779 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
@@ -49,4 +49,8 @@
     public String getDatasetName() {
         return indexName;
     }
+
+    public static boolean isMetadataDataset(int datasetId) {
+        return datasetId < FIRST_AVAILABLE_USER_DATASET_ID;
+    }
 }
diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
new file mode 100644
index 0000000..8304a80
--- /dev/null
+++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.test.context;
+
+import java.util.logging.ConsoleHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.asterix.common.config.StorageProperties;
+import org.apache.asterix.common.context.DatasetMemoryManager;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+public class DatasetMemoryManagerTest {
+
+    private static final StorageProperties storageProperties;
+    private static final long GLOBAL_BUDGET = 1000L;
+    private static final long METADATA_DATASET_BUDGET = 200L;
+    private static final long DATASET_BUDGET = 400L;
+
+    static {
+        Logger root = Logger.getLogger("org.apache");
+        ConsoleHandler handler = new ConsoleHandler();
+        handler.setLevel(Level.INFO);
+        root.addHandler(handler);
+        root.setLevel(Level.INFO);
+        root.fine("just testing");
+
+        storageProperties = Mockito.mock(StorageProperties.class);
+        Mockito.when(storageProperties.getMemoryComponentGlobalBudget()).thenReturn(GLOBAL_BUDGET);
+        Mockito.when(storageProperties.getMemoryComponentNumPages()).thenReturn(8);
+        Mockito.when(storageProperties.getMetadataMemoryComponentNumPages()).thenReturn(4);
+        Mockito.when(storageProperties.getMemoryComponentPageSize()).thenReturn(50);
+        Mockito.when(storageProperties.getMemoryComponentsNum()).thenReturn(2);
+    }
+
+    @Test
+    public void allocate() {
+        DatasetMemoryManager memoryManager = new DatasetMemoryManager(storageProperties);
+        // double allocate
+        Assert.assertTrue(memoryManager.allocate(1));
+        boolean thrown = false;
+        try {
+            memoryManager.allocate(1);
+        } catch (IllegalStateException e) {
+            Assert.assertTrue(e.getMessage().contains("already allocated"));
+            thrown = true;
+        }
+        Assert.assertTrue(thrown);
+
+        // allocate metadata and non-metadata datasets
+        Assert.assertTrue(memoryManager.allocate(400));
+
+        long expectedBudget = GLOBAL_BUDGET - METADATA_DATASET_BUDGET - DATASET_BUDGET;
+        Assert.assertEquals(memoryManager.getAvailable(), expectedBudget);
+
+        // exceed budget
+        Assert.assertTrue(memoryManager.allocate(401));
+        Assert.assertFalse(memoryManager.allocate(402));
+    }
+
+    @Test
+    public void reserve() {
+        DatasetMemoryManager memoryManager = new DatasetMemoryManager(storageProperties);
+        // reserve then allocate budget
+        Assert.assertTrue(memoryManager.reserve(1));
+        Assert.assertTrue(memoryManager.allocate(1));
+        long expectedBudget = GLOBAL_BUDGET - METADATA_DATASET_BUDGET;
+        Assert.assertEquals(memoryManager.getAvailable(), expectedBudget);
+
+        // double reserve
+        boolean thrown = false;
+        Assert.assertTrue(memoryManager.reserve(2));
+        try {
+            memoryManager.reserve(2);
+        } catch (IllegalStateException e) {
+            Assert.assertTrue(e.getMessage().contains("already reserved"));
+            thrown = true;
+        }
+        Assert.assertTrue(thrown);
+
+        // cancel reserved
+        memoryManager.cancelReserved(2);
+        Assert.assertEquals(memoryManager.getAvailable(), expectedBudget);
+    }
+
+    @Test
+    public void deallocate() {
+        DatasetMemoryManager memoryManager = new DatasetMemoryManager(storageProperties);
+        // deallocate reserved
+        Assert.assertTrue(memoryManager.reserve(200));
+        Assert.assertTrue(memoryManager.allocate(200));
+        memoryManager.deallocate(200);
+        long expectedBudget = GLOBAL_BUDGET - DATASET_BUDGET;
+        Assert.assertEquals(memoryManager.getAvailable(), expectedBudget);
+
+        // deallocate not allocated
+        boolean thrown = false;
+        try {
+            memoryManager.deallocate(1);
+        } catch (IllegalStateException e) {
+            Assert.assertTrue(e.getMessage().contains("No allocated"));
+            thrown = true;
+        }
+        Assert.assertTrue(thrown);
+
+        // double deallocate
+        memoryManager.allocate(2);
+        memoryManager.deallocate(2);
+        thrown = false;
+        try {
+            memoryManager.deallocate(2);
+        } catch (IllegalStateException e) {
+            Assert.assertTrue(e.getMessage().contains("No allocated"));
+            thrown = true;
+        }
+        Assert.assertTrue(thrown);
+    }
+}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
index dc38749..af1aa75 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
@@ -302,6 +302,11 @@
      */
     public static void enlistMetadataDataset(INCServiceContext ncServiceCtx, IMetadataIndex index)
             throws HyracksDataException {
+        final int datasetId = index.getDatasetId().getId();
+        // reserve memory for metadata dataset to ensure it can be opened when needed
+        if (!appContext.getDatasetMemoryManager().reserve(index.getDatasetId().getId())) {
+            throw new IllegalStateException("Failed to reserve memory for metadata dataset(" + datasetId + ")");
+        }
         ClusterPartition metadataPartition = appContext.getMetadataProperties().getMetadataPartition();
         int metadataDeviceId = metadataPartition.getIODeviceNum();
         String metadataPartitionPath = StoragePathUtil.prepareStoragePartitionPath(
@@ -317,20 +322,20 @@
         // We are unable to do this since IStorageManager needs a dataset to determine the appropriate
         // objects
         ILSMOperationTrackerFactory opTrackerFactory =
-                index.isPrimaryIndex() ? new PrimaryIndexOperationTrackerFactory(index.getDatasetId().getId())
-                        : new SecondaryIndexOperationTrackerFactory(index.getDatasetId().getId());
+                index.isPrimaryIndex() ? new PrimaryIndexOperationTrackerFactory(datasetId)
+                        : new SecondaryIndexOperationTrackerFactory(datasetId);
         ILSMIOOperationCallbackFactory ioOpCallbackFactory = LSMBTreeIOOperationCallbackFactory.INSTANCE;
         IStorageComponentProvider storageComponentProvider = appContext.getStorageComponentProvider();
         if (isNewUniverse()) {
             LSMBTreeLocalResourceFactory lsmBtreeFactory = new LSMBTreeLocalResourceFactory(
                     storageComponentProvider.getStorageManager(), typeTraits, cmpFactories, null, null, null,
                     opTrackerFactory, ioOpCallbackFactory, storageComponentProvider.getMetadataPageManagerFactory(),
-                    new AsterixVirtualBufferCacheProvider(index.getDatasetId().getId()),
+                    new AsterixVirtualBufferCacheProvider(datasetId),
                     storageComponentProvider.getIoOperationSchedulerProvider(),
                     appContext.getMetadataMergePolicyFactory(), GlobalConfig.DEFAULT_COMPACTION_POLICY_PROPERTIES, true,
                     bloomFilterKeyFields, appContext.getBloomFilterFalsePositiveRate(), true, null);
             DatasetLocalResourceFactory dsLocalResourceFactory =
-                    new DatasetLocalResourceFactory(index.getDatasetId().getId(), lsmBtreeFactory);
+                    new DatasetLocalResourceFactory(datasetId, lsmBtreeFactory);
             // TODO(amoudi) Creating the index should be done through the same code path as other indexes
             // This is to be done by having a metadata dataset associated with each index
             IIndexBuilder indexBuilder = new IndexBuilder(ncServiceCtx, storageComponentProvider.getStorageManager(),
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/ThreadSafe.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/ThreadSafe.java
new file mode 100644
index 0000000..2766c37
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/ThreadSafe.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.hyracks.util.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * The type to which this annotation is applied is thread-safe.
+ */
+@Documented
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.SOURCE)
+public @interface ThreadSafe {
+}
\ No newline at end of file

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>


Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

WARNING: THIS CHANGE CONTAINS CROSS-PRODUCT CHANGES IN:
* asterixdb
* hyracks-fullstack

PLEASE REVIEW CAREFULLY AND LOOK FOR API CHANGES!

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Murtadha Hubail (Code Review)" <do...@asterixdb.incubator.apache.org>.
Murtadha Hubail has submitted this change and it was merged.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


[ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

- user model changes: no
- storage format changes: no
- interface changes: yes
  Added IDatasetMemoryManager to manage datasets memory
  reservation and allocation.

Details:
- Reserve metadata datasets memory to allow them to be opened
  when needed.
- Add UngracefulShutdownNCApplication to force recovery
  to run on AsterixHyracksIntegrationUtil.
- Refactor the use of firstAvilableUserDatasetID to check
  for metadata datasets.
- Add ThreadSafe annotation.
- Add test case for RecoveryManager after creating multiple
  datasets.

Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2112
Sonar-Qube: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: Michael Blow <mb...@apache.org>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
A asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetMemoryManager.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
A asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
A hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/ThreadSafe.java
13 files changed, 568 insertions(+), 65 deletions(-)

Approvals:
  Jenkins: Verified; No violations found; ; Verified
  Michael Blow: Looks good to me, approved



diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
index ecf25eb..50c3ff6 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
@@ -63,6 +63,7 @@
     public ClusterControllerService cc;
     public NodeControllerService[] ncs = new NodeControllerService[0];
     public IHyracksClientConnection hcc;
+    protected boolean gracefulShutdown = true;
 
     private static final String DEFAULT_STORAGE_PATH = joinPath("target", "io", "dir");
     private static String storagePath = DEFAULT_STORAGE_PATH;
@@ -158,6 +159,9 @@
     }
 
     protected INCApplication createNCApplication() {
+        if (!gracefulShutdown) {
+            return new UngracefulShutdownNCApplication();
+        }
         return new NCApplication();
     }
 
@@ -227,6 +231,10 @@
         storagePath = path;
     }
 
+    public void setGracefulShutdown(boolean gracefulShutdown) {
+        this.gracefulShutdown = gracefulShutdown;
+    }
+
     public static void restoreDefaultStoragePath() {
         storagePath = DEFAULT_STORAGE_PATH;
     }
@@ -288,4 +296,11 @@
             Thread.sleep(10000);
         }
     }
+
+    private class UngracefulShutdownNCApplication extends NCApplication {
+        @Override
+        public void stop() throws Exception {
+            // ungraceful shutdown
+        }
+    }
 }
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 5370c03..7b08f68 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
@@ -32,6 +32,7 @@
 import org.apache.asterix.active.ActiveManager;
 import org.apache.asterix.api.common.AppRuntimeContextProviderForRecovery;
 import org.apache.asterix.common.api.IDatasetLifecycleManager;
+import org.apache.asterix.common.api.IDatasetMemoryManager;
 import org.apache.asterix.common.api.INcApplicationContext;
 import org.apache.asterix.common.cluster.ClusterPartition;
 import org.apache.asterix.common.config.ActiveProperties;
@@ -48,11 +49,11 @@
 import org.apache.asterix.common.config.StorageProperties;
 import org.apache.asterix.common.config.TransactionProperties;
 import org.apache.asterix.common.context.DatasetLifecycleManager;
+import org.apache.asterix.common.context.DatasetMemoryManager;
 import org.apache.asterix.common.context.IStorageComponentProvider;
 import org.apache.asterix.common.exceptions.ACIDException;
 import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.common.library.ILibraryManager;
-import org.apache.asterix.common.metadata.MetadataIndexImmutableProperties;
 import org.apache.asterix.common.replication.IRemoteRecoveryManager;
 import org.apache.asterix.common.replication.IReplicaResourcesManager;
 import org.apache.asterix.common.replication.IReplicationChannel;
@@ -119,6 +120,7 @@
     private MessagingProperties messagingProperties;
     private final NodeProperties nodeProperties;
     private ExecutorService threadExecutor;
+    private IDatasetMemoryManager datasetMemoryManager;
     private IDatasetLifecycleManager datasetLifecycleManager;
     private IBufferCache bufferCache;
     private ITransactionSubsystem txnSubsystem;
@@ -198,9 +200,10 @@
             localResourceRepository.deleteStorageData(true);
         }
 
-        datasetLifecycleManager = new DatasetLifecycleManager(storageProperties, localResourceRepository,
-                MetadataIndexImmutableProperties.FIRST_AVAILABLE_USER_DATASET_ID, txnSubsystem.getLogManager(),
-                ioManager.getIODevices().size());
+        datasetMemoryManager = new DatasetMemoryManager(storageProperties);
+        datasetLifecycleManager =
+                new DatasetLifecycleManager(storageProperties, localResourceRepository, txnSubsystem.getLogManager(),
+                        datasetMemoryManager, ioManager.getIODevices().size());
 
         isShuttingdown = false;
 
@@ -316,6 +319,11 @@
     }
 
     @Override
+    public IDatasetMemoryManager getDatasetMemoryManager() {
+        return datasetMemoryManager;
+    }
+
+    @Override
     public double getBloomFilterFalsePositiveRate() {
         return storageProperties.getBloomFilterFalsePositiveRate();
     }
diff --git a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
new file mode 100644
index 0000000..723786c
--- /dev/null
+++ b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.test.txn;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Random;
+
+import org.apache.asterix.api.common.AsterixHyracksIntegrationUtil;
+import org.apache.asterix.common.config.GlobalConfig;
+import org.apache.asterix.common.configuration.AsterixConfiguration;
+import org.apache.asterix.common.configuration.Property;
+import org.apache.asterix.common.utils.Servlets;
+import org.apache.asterix.test.common.TestExecutor;
+import org.apache.asterix.test.common.TestHelper;
+import org.apache.asterix.testframework.context.TestCaseContext;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+public class RecoveryManagerTest {
+
+    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
+    private static final String DEFAULT_TEST_CONFIG_FILE_NAME = "asterix-build-configuration.xml";
+    private static final String TEST_CONFIG_FILE_NAME = "asterix-test-configuration.xml";
+    private static final String TEST_CONFIG_PATH =
+            System.getProperty("user.dir") + File.separator + "target" + File.separator + "config";
+    private static final String TEST_CONFIG_FILE_PATH = TEST_CONFIG_PATH + File.separator + TEST_CONFIG_FILE_NAME;
+    private static final TestExecutor testExecutor = new TestExecutor();
+    private static final AsterixHyracksIntegrationUtil integrationUtil = new AsterixHyracksIntegrationUtil();
+    private static final Random random = new Random();
+    private static final int numRecords = 1;
+
+    @Before
+    public void setUp() throws Exception {
+        // Read default test configurations
+        AsterixConfiguration ac = TestHelper.getConfigurations(DEFAULT_TEST_CONFIG_FILE_NAME);
+        // override memory config to enforce dataset eviction
+        ac.getProperty().add(new Property("storage.memorycomponent.globalbudget", "128MB", ""));
+        ac.getProperty().add(new Property("storage.memorycomponent.numpages", "32", ""));
+        // Write test config file
+        TestHelper.writeConfigurations(ac, TEST_CONFIG_FILE_PATH);
+        System.setProperty(GlobalConfig.CONFIG_FILE_PROPERTY, TEST_CONFIG_FILE_PATH);
+        integrationUtil.setGracefulShutdown(false);
+        integrationUtil.init(true);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        integrationUtil.deinit(true);
+    }
+
+    @Test
+    public void multiDatasetRecovery() throws Exception {
+        String datasetNamePrefix = "ds_";
+        final TestCaseContext.OutputFormat format = TestCaseContext.OutputFormat.CLEAN_JSON;
+        testExecutor.executeSqlppUpdateOrDdl("CREATE TYPE KeyType AS { id: int };", format);
+        int numDatasets = 50;
+        String datasetName = null;
+        for (int i = 1; i <= numDatasets; i++) {
+            datasetName = datasetNamePrefix + i;
+            testExecutor.executeSqlppUpdateOrDdl("CREATE DATASET " + datasetName + "(KeyType) PRIMARY KEY id;", format);
+            insertData(datasetName);
+        }
+        // do ungraceful shutdown to enforce recovery
+        integrationUtil.deinit(false);
+        integrationUtil.init(false);
+        validateRecovery(datasetName);
+
+        // create more datasets after recovery
+        numDatasets = 100;
+        for (int i = 51; i <= numDatasets; i++) {
+            datasetName = datasetNamePrefix + i;
+            testExecutor.executeSqlppUpdateOrDdl("CREATE DATASET " + datasetName + "(KeyType) PRIMARY KEY id;", format);
+            insertData(datasetName);
+        }
+        // do ungraceful shutdown to enforce recovery again
+        integrationUtil.deinit(false);
+        integrationUtil.init(false);
+        validateRecovery(datasetName);
+    }
+
+    private void insertData(String datasetName) throws Exception {
+        for (int i = 0; i < numRecords; i++) {
+            testExecutor.executeSqlppUpdateOrDdl("UPSERT INTO " + datasetName + " ({\"id\": " + random.nextInt() + "})",
+                    TestCaseContext.OutputFormat.CLEAN_JSON);
+        }
+    }
+
+    private void validateRecovery(String datasetName) throws Exception {
+        final String query = "select value count(*) from `" + datasetName + "`;";
+        final InputStream inputStream = testExecutor
+                .executeQueryService(query, testExecutor.getEndpoint(Servlets.QUERY_SERVICE),
+                        TestCaseContext.OutputFormat.CLEAN_JSON);
+        final ObjectNode jsonNodes = OBJECT_MAPPER.readValue(inputStream, ObjectNode.class);
+        JsonNode result = jsonNodes.get("results");
+        // make sure there is result
+        Assert.assertEquals(1, result.size());
+        for (int i = 0; i < result.size(); i++) {
+            JsonNode json = result.get(i);
+            Assert.assertEquals(numRecords, json.asInt());
+        }
+    }
+}
\ No newline at end of file
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetMemoryManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetMemoryManager.java
new file mode 100644
index 0000000..fde2c80
--- /dev/null
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetMemoryManager.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.common.api;
+
+public interface IDatasetMemoryManager {
+
+    /**
+     * Allocates memory for dataset {@code datasetId}.
+     *
+     * @param datasetId
+     * @return true, if the allocation is successful, otherwise false.
+     */
+    boolean allocate(int datasetId);
+
+    /**
+     * Deallocates memory of dataset {@code datasetId}.
+     *
+     * @param datasetId
+     */
+    void deallocate(int datasetId);
+
+    /**
+     * Reserves memory for dataset {@code datasetId}. The reserved memory
+     * is guaranteed to be allocatable when needed for the dataset. Reserve
+     * maybe called after allocation to reserve the allocated budget
+     * on deallocation.
+     *
+     * @param datasetId
+     * @return true, if the allocation is successful, otherwise false.
+     */
+    boolean reserve(int datasetId);
+
+    /**
+     * Cancels the reserved memory for dataset {@code datasetId}.
+     *
+     * @param datasetId
+     */
+    void cancelReserved(int datasetId);
+
+    /**
+     * @return The remaining memory budget that can be used for datasets.
+     */
+    long getAvailable();
+
+    /**
+     * @param datasetId
+     * @return The number of virtual buffer cache pages that should be allocated for dataset {@code datasetId}.
+     */
+    int getNumPages(int datasetId);
+}
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
index d4b9a92..548907c 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
@@ -62,6 +62,8 @@
 
     IDatasetLifecycleManager getDatasetLifecycleManager();
 
+    IDatasetMemoryManager getDatasetMemoryManager();
+
     IResourceIdFactory getResourceIdFactory();
 
     ILSMOperationTracker getLSMBTreeOperationTracker(int datasetID);
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
index 545382a..e79f002 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
@@ -29,6 +29,7 @@
 import java.util.logging.Logger;
 
 import org.apache.asterix.common.api.IDatasetLifecycleManager;
+import org.apache.asterix.common.api.IDatasetMemoryManager;
 import org.apache.asterix.common.config.StorageProperties;
 import org.apache.asterix.common.dataflow.DatasetLocalResource;
 import org.apache.asterix.common.exceptions.ACIDException;
@@ -51,27 +52,24 @@
 import org.apache.hyracks.storage.common.LocalResource;
 
 public class DatasetLifecycleManager implements IDatasetLifecycleManager, ILifeCycleComponent {
+
     private static final Logger LOGGER = Logger.getLogger(DatasetLifecycleManager.class.getName());
     private final Map<Integer, DatasetResource> datasets = new ConcurrentHashMap<>();
     private final StorageProperties storageProperties;
     private final ILocalResourceRepository resourceRepository;
-    private final int firstAvilableUserDatasetID;
-    private final long capacity;
-    private long used;
+    private final IDatasetMemoryManager memoryManager;
     private final ILogManager logManager;
     private final LogRecord logRecord;
     private final int numPartitions;
     private volatile boolean stopped = false;
 
     public DatasetLifecycleManager(StorageProperties storageProperties, ILocalResourceRepository resourceRepository,
-            int firstAvilableUserDatasetID, ILogManager logManager, int numPartitions) {
+            ILogManager logManager, IDatasetMemoryManager memoryManager, int numPartitions) {
         this.logManager = logManager;
         this.storageProperties = storageProperties;
         this.resourceRepository = resourceRepository;
-        this.firstAvilableUserDatasetID = firstAvilableUserDatasetID;
+        this.memoryManager = memoryManager;
         this.numPartitions = numPartitions;
-        capacity = storageProperties.getMemoryComponentGlobalBudget();
-        used = 0;
         logRecord = new LogRecord();
     }
 
@@ -200,9 +198,10 @@
         for (DatasetResource dsr : datasetsResources) {
             PrimaryIndexOperationTracker opTracker = dsr.getOpTracker();
             if (opTracker != null && opTracker.getNumActiveOperations() == 0
-                    && dsr.getDatasetInfo().getReferenceCount() == 0 && dsr.getDatasetInfo().isOpen()
-                    && dsr.getDatasetInfo().getDatasetID() >= getFirstAvilableUserDatasetID()) {
+                    && dsr.getDatasetInfo().getReferenceCount() == 0 && dsr.getDatasetInfo().isOpen() && !dsr
+                    .isMetadataDataset()) {
                 closeDataset(dsr.getDatasetInfo());
+                LOGGER.info(() -> "Evicted Dataset" + dsr.getDatasetID());
                 return true;
             }
         }
@@ -230,8 +229,9 @@
             if (dsr == null) {
                 DatasetInfo dsInfo = new DatasetInfo(did);
                 PrimaryIndexOperationTracker opTracker = new PrimaryIndexOperationTracker(did, logManager, dsInfo);
-                DatasetVirtualBufferCaches vbcs = new DatasetVirtualBufferCaches(did, storageProperties,
-                        getFirstAvilableUserDatasetID(), getNumPartitions());
+                DatasetVirtualBufferCaches vbcs =
+                        new DatasetVirtualBufferCaches(did, storageProperties, memoryManager.getNumPages(did),
+                                numPartitions);
                 dsr = new DatasetResource(dsInfo, opTracker, vbcs);
                 datasets.put(did, dsr);
             }
@@ -322,8 +322,8 @@
     }
 
     @Override
-    public synchronized void start() {
-        used = 0;
+    public void start() {
+        // no op
     }
 
     @Override
@@ -449,7 +449,7 @@
     public synchronized void closeUserDatasets() throws HyracksDataException {
         ArrayList<DatasetResource> openDatasets = new ArrayList<>(datasets.values());
         for (DatasetResource dsr : openDatasets) {
-            if (dsr.getDatasetID() >= getFirstAvilableUserDatasetID()) {
+            if (!dsr.isMetadataDataset()) {
                 closeDataset(dsr.getDatasetInfo());
             }
         }
@@ -474,8 +474,8 @@
     public void dumpState(OutputStream outputStream) throws IOException {
         StringBuilder sb = new StringBuilder();
 
-        sb.append(String.format("Memory budget = %d\n", capacity));
-        sb.append(String.format("Memory used = %d\n", used));
+        sb.append(String.format("Memory budget = %d%n", storageProperties.getMemoryComponentGlobalBudget()));
+        sb.append(String.format("Memory available = %d%n", memoryManager.getAvailable()));
         sb.append("\n");
 
         String dsHeaderFormat = "%-10s %-6s %-16s %-12s\n";
@@ -515,7 +515,7 @@
         }
         synchronized (dsInfo) {
             if (dsInfo.isOpen() && dsInfo.isMemoryAllocated()) {
-                used -= getVirtualBufferCaches(dsInfo.getDatasetID()).getTotalSize();
+                memoryManager.deallocate(datasetId);
                 dsInfo.setMemoryAllocated(false);
             }
         }
@@ -534,25 +534,15 @@
         synchronized (dsInfo) {
             // This is not needed for external datasets' indexes since they never use the virtual buffer cache.
             if (!dsInfo.isMemoryAllocated() && !dsInfo.isExternal()) {
-                long additionalSize = getVirtualBufferCaches(dsInfo.getDatasetID()).getTotalSize();
-                while (used + additionalSize > capacity) {
+                while (!memoryManager.allocate(datasetId)) {
                     if (!evictCandidateDataset()) {
                         throw new HyracksDataException("Cannot allocate dataset " + dsInfo.getDatasetID()
                                 + " memory since memory budget would be exceeded.");
                     }
                 }
-                used += additionalSize;
                 dsInfo.setMemoryAllocated(true);
             }
         }
-    }
-
-    public int getFirstAvilableUserDatasetID() {
-        return firstAvilableUserDatasetID;
-    }
-
-    public int getNumPartitions() {
-        return numPartitions;
     }
 
     @Override
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
new file mode 100644
index 0000000..88f406e
--- /dev/null
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.common.context;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import org.apache.asterix.common.api.IDatasetMemoryManager;
+import org.apache.asterix.common.config.StorageProperties;
+import org.apache.asterix.common.metadata.MetadataIndexImmutableProperties;
+import org.apache.hyracks.util.annotations.ThreadSafe;
+
+@ThreadSafe
+public class DatasetMemoryManager implements IDatasetMemoryManager {
+
+    private static final Logger LOGGER = Logger.getLogger(DatasetMemoryManager.class.getName());
+    private final Map<Integer, Long> allocatedMap = new HashMap<>();
+    private final Map<Integer, Long> reservedMap = new HashMap<>();
+    private long available;
+    private final StorageProperties storageProperties;
+
+    public DatasetMemoryManager(StorageProperties storageProperties) {
+        this.storageProperties = storageProperties;
+        available = storageProperties.getMemoryComponentGlobalBudget();
+    }
+
+    @Override
+    public synchronized boolean allocate(int datasetId) {
+        if (allocatedMap.containsKey(datasetId)) {
+            throw new IllegalStateException("Memory is already allocated for dataset: " + datasetId);
+        }
+        if (reservedMap.containsKey(datasetId)) {
+            allocateReserved(datasetId);
+            return true;
+        }
+        final long required = getTotalSize(datasetId);
+        if (!isAllocatable(required)) {
+            return false;
+        }
+        allocatedMap.put(datasetId, required);
+        available -= required;
+        LOGGER.info(() -> "Allocated(" + required + ") for dataset(" + datasetId + ")");
+        return true;
+    }
+
+    @Override
+    public synchronized void deallocate(int datasetId) {
+        if (!allocatedMap.containsKey(datasetId) && !reservedMap.containsKey(datasetId)) {
+            throw new IllegalStateException("No allocated or reserved memory for dataset: " + datasetId);
+        }
+        final Long allocated = allocatedMap.remove(datasetId);
+        // return the allocated budget if it is not reserved
+        if (allocated != null && !reservedMap.containsKey(datasetId)) {
+            available += allocated;
+            LOGGER.info(() -> "Deallocated(" + allocated + ") from dataset(" + datasetId + ")");
+        }
+    }
+
+    @Override
+    public synchronized boolean reserve(int datasetId) {
+        if (reservedMap.containsKey(datasetId)) {
+            throw new IllegalStateException("Memory is already reserved for dataset: " + datasetId);
+        }
+        final long required = getTotalSize(datasetId);
+        if (!isAllocatable(required) && !allocatedMap.containsKey(datasetId)) {
+            return false;
+        }
+        reservedMap.put(datasetId, required);
+        // if the budget is already allocated, no need to reserve it again
+        if (!allocatedMap.containsKey(datasetId)) {
+            available -= required;
+        }
+        LOGGER.info(() -> "Reserved(" + required + ") for dataset(" + datasetId + ")");
+        return true;
+    }
+
+    @Override
+    public synchronized void cancelReserved(int datasetId) {
+        final Long reserved = reservedMap.remove(datasetId);
+        if (reserved == null) {
+            throw new IllegalStateException("No reserved memory for dataset: " + datasetId);
+        }
+        available += reserved;
+        LOGGER.info(() -> "Cancelled reserved(" + reserved + ") from dataset(" + datasetId + ")");
+    }
+
+    @Override
+    public long getAvailable() {
+        return available;
+    }
+
+    @Override
+    public int getNumPages(int datasetId) {
+        return MetadataIndexImmutableProperties.isMetadataDataset(datasetId) ?
+                storageProperties.getMetadataMemoryComponentNumPages() :
+                storageProperties.getMemoryComponentNumPages();
+    }
+
+    private long getTotalSize(int datasetId) {
+        return storageProperties.getMemoryComponentPageSize() * (long) getNumPages(datasetId);
+    }
+
+    private boolean isAllocatable(long required) {
+        return available - required >= 0;
+    }
+
+    private void allocateReserved(int datasetId) {
+        final Long reserved = reservedMap.get(datasetId);
+        allocatedMap.put(datasetId, reserved);
+    }
+}
\ No newline at end of file
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
index f2f3b93..b59fe6a 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
@@ -21,6 +21,7 @@
 import java.util.Map;
 
 import org.apache.asterix.common.dataflow.DatasetLocalResource;
+import org.apache.asterix.common.metadata.MetadataIndexImmutableProperties;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndex;
 import org.apache.hyracks.storage.common.IIndex;
@@ -141,4 +142,8 @@
     public int getDatasetID() {
         return datasetInfo.getDatasetID();
     }
+
+    public boolean isMetadataDataset() {
+        return MetadataIndexImmutableProperties.isMetadataDataset(getDatasetID());
+    }
 }
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java
index c7eda4d..c9b9698 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java
@@ -33,51 +33,39 @@
 public class DatasetVirtualBufferCaches {
     private final int datasetID;
     private final StorageProperties storageProperties;
-    private final int firstAvilableUserDatasetID;
     private final int numPartitions;
+    private final int numPages;
     private final Map<Integer, List<IVirtualBufferCache>> ioDeviceVirtualBufferCaches = new HashMap<>();
 
-    public DatasetVirtualBufferCaches(int datasetID, StorageProperties storageProperties,
-            int firstAvilableUserDatasetID, int numPartitions) {
+    public DatasetVirtualBufferCaches(int datasetID, StorageProperties storageProperties, int numPages,
+            int numPartitions) {
         this.datasetID = datasetID;
         this.storageProperties = storageProperties;
-        this.firstAvilableUserDatasetID = firstAvilableUserDatasetID;
         this.numPartitions = numPartitions;
-    }
-
-    public List<IVirtualBufferCache> initializeVirtualBufferCaches(IResourceMemoryManager memoryManager,
-            int ioDeviceNum) {
-        int numPages = datasetID < firstAvilableUserDatasetID
-                ? storageProperties.getMetadataMemoryComponentNumPages()
-                : storageProperties.getMemoryComponentNumPages();
-        List<IVirtualBufferCache> vbcs = new ArrayList<>();
-        for (int i = 0; i < storageProperties.getMemoryComponentsNum(); i++) {
-            MultitenantVirtualBufferCache vbc = new MultitenantVirtualBufferCache(
-                    new VirtualBufferCache(
-                            new ResourceHeapBufferAllocator(memoryManager,
-                                    Integer.toString(datasetID)),
-                            storageProperties.getMemoryComponentPageSize(),
-                            numPages / storageProperties.getMemoryComponentsNum() / numPartitions));
-            vbcs.add(vbc);
-        }
-        ioDeviceVirtualBufferCaches.put(ioDeviceNum, vbcs);
-        return vbcs;
+        this.numPages = numPages;
     }
 
     public List<IVirtualBufferCache> getVirtualBufferCaches(IResourceMemoryManager memoryManager, int ioDeviceNum) {
         synchronized (ioDeviceVirtualBufferCaches) {
             List<IVirtualBufferCache> vbcs = ioDeviceVirtualBufferCaches.get(ioDeviceNum);
             if (vbcs == null) {
-                vbcs = initializeVirtualBufferCaches(memoryManager, ioDeviceNum);
+                vbcs = initializeVirtualBufferCaches(memoryManager, ioDeviceNum, numPages);
             }
             return vbcs;
         }
     }
 
-    public long getTotalSize() {
-        int numPages = datasetID < firstAvilableUserDatasetID
-                ? storageProperties.getMetadataMemoryComponentNumPages()
-                : storageProperties.getMemoryComponentNumPages();
-        return storageProperties.getMemoryComponentPageSize() * ((long) numPages);
+    private List<IVirtualBufferCache> initializeVirtualBufferCaches(IResourceMemoryManager memoryManager,
+            int ioDeviceNum, int numPages) {
+        List<IVirtualBufferCache> vbcs = new ArrayList<>();
+        for (int i = 0; i < storageProperties.getMemoryComponentsNum(); i++) {
+            MultitenantVirtualBufferCache vbc = new MultitenantVirtualBufferCache(
+                    new VirtualBufferCache(new ResourceHeapBufferAllocator(memoryManager, Integer.toString(datasetID)),
+                            storageProperties.getMemoryComponentPageSize(),
+                            numPages / storageProperties.getMemoryComponentsNum() / numPartitions));
+            vbcs.add(vbc);
+        }
+        ioDeviceVirtualBufferCaches.put(ioDeviceNum, vbcs);
+        return vbcs;
     }
 }
diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
index 74589cc..8b4c779 100644
--- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
+++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
@@ -49,4 +49,8 @@
     public String getDatasetName() {
         return indexName;
     }
+
+    public static boolean isMetadataDataset(int datasetId) {
+        return datasetId < FIRST_AVAILABLE_USER_DATASET_ID;
+    }
 }
diff --git a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
new file mode 100644
index 0000000..b8e3604
--- /dev/null
+++ b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
@@ -0,0 +1,133 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.asterix.test.context;
+
+import org.apache.asterix.common.config.StorageProperties;
+import org.apache.asterix.common.context.DatasetMemoryManager;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.Mockito;
+
+public class DatasetMemoryManagerTest {
+
+    private static final StorageProperties storageProperties;
+    private static final long GLOBAL_BUDGET = 1000L;
+    private static final long METADATA_DATASET_BUDGET = 200L;
+    private static final long DATASET_BUDGET = 400L;
+
+    static {
+        storageProperties = Mockito.mock(StorageProperties.class);
+        Mockito.when(storageProperties.getMemoryComponentGlobalBudget()).thenReturn(GLOBAL_BUDGET);
+        Mockito.when(storageProperties.getMemoryComponentNumPages()).thenReturn(8);
+        Mockito.when(storageProperties.getMetadataMemoryComponentNumPages()).thenReturn(4);
+        Mockito.when(storageProperties.getMemoryComponentPageSize()).thenReturn(50);
+        Mockito.when(storageProperties.getMemoryComponentsNum()).thenReturn(2);
+    }
+
+    @Test
+    public void allocate() {
+        DatasetMemoryManager memoryManager = new DatasetMemoryManager(storageProperties);
+        // double allocate
+        Assert.assertTrue(memoryManager.allocate(1));
+        boolean thrown = false;
+        try {
+            memoryManager.allocate(1);
+        } catch (IllegalStateException e) {
+            Assert.assertTrue(e.getMessage().contains("already allocated"));
+            thrown = true;
+        }
+        Assert.assertTrue(thrown);
+
+        // allocate metadata and non-metadata datasets
+        Assert.assertTrue(memoryManager.allocate(400));
+
+        long expectedBudget = GLOBAL_BUDGET - METADATA_DATASET_BUDGET - DATASET_BUDGET;
+        Assert.assertEquals(memoryManager.getAvailable(), expectedBudget);
+
+        // reserve after allocate shouldn't allocate the budget again
+        Assert.assertTrue(memoryManager.allocate(401));
+        Assert.assertTrue(memoryManager.reserve(401));
+
+        // deallocate should still keep the reserved memory
+        memoryManager.deallocate(401);
+        expectedBudget = GLOBAL_BUDGET - METADATA_DATASET_BUDGET - (DATASET_BUDGET * 2);
+        Assert.assertEquals(memoryManager.getAvailable(), expectedBudget);
+
+        // exceed budget should return false
+        Assert.assertFalse(memoryManager.allocate(402));
+    }
+
+    @Test
+    public void reserve() {
+        DatasetMemoryManager memoryManager = new DatasetMemoryManager(storageProperties);
+        // reserve then allocate budget
+        Assert.assertTrue(memoryManager.reserve(1));
+        Assert.assertTrue(memoryManager.allocate(1));
+        long expectedBudget = GLOBAL_BUDGET - METADATA_DATASET_BUDGET;
+        Assert.assertEquals(memoryManager.getAvailable(), expectedBudget);
+
+        // double reserve
+        boolean thrown = false;
+        Assert.assertTrue(memoryManager.reserve(2));
+        try {
+            memoryManager.reserve(2);
+        } catch (IllegalStateException e) {
+            Assert.assertTrue(e.getMessage().contains("already reserved"));
+            thrown = true;
+        }
+        Assert.assertTrue(thrown);
+
+        // cancel reserved
+        memoryManager.cancelReserved(2);
+        Assert.assertEquals(memoryManager.getAvailable(), expectedBudget);
+    }
+
+    @Test
+    public void deallocate() {
+        DatasetMemoryManager memoryManager = new DatasetMemoryManager(storageProperties);
+        // deallocate reserved
+        Assert.assertTrue(memoryManager.reserve(200));
+        Assert.assertTrue(memoryManager.allocate(200));
+        memoryManager.deallocate(200);
+        long expectedBudget = GLOBAL_BUDGET - DATASET_BUDGET;
+        Assert.assertEquals(memoryManager.getAvailable(), expectedBudget);
+
+        // deallocate not allocated
+        boolean thrown = false;
+        try {
+            memoryManager.deallocate(1);
+        } catch (IllegalStateException e) {
+            Assert.assertTrue(e.getMessage().contains("No allocated"));
+            thrown = true;
+        }
+        Assert.assertTrue(thrown);
+
+        // double deallocate
+        memoryManager.allocate(2);
+        memoryManager.deallocate(2);
+        thrown = false;
+        try {
+            memoryManager.deallocate(2);
+        } catch (IllegalStateException e) {
+            Assert.assertTrue(e.getMessage().contains("No allocated"));
+            thrown = true;
+        }
+        Assert.assertTrue(thrown);
+    }
+}
diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
index dc38749..a6f1ad0 100644
--- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
+++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
@@ -302,6 +302,11 @@
      */
     public static void enlistMetadataDataset(INCServiceContext ncServiceCtx, IMetadataIndex index)
             throws HyracksDataException {
+        final int datasetId = index.getDatasetId().getId();
+        // reserve memory for metadata dataset to ensure it can be opened when needed
+        if (!appContext.getDatasetMemoryManager().reserve(index.getDatasetId().getId())) {
+            throw new IllegalStateException("Failed to reserve memory for metadata dataset (" + datasetId + ")");
+        }
         ClusterPartition metadataPartition = appContext.getMetadataProperties().getMetadataPartition();
         int metadataDeviceId = metadataPartition.getIODeviceNum();
         String metadataPartitionPath = StoragePathUtil.prepareStoragePartitionPath(
@@ -317,20 +322,20 @@
         // We are unable to do this since IStorageManager needs a dataset to determine the appropriate
         // objects
         ILSMOperationTrackerFactory opTrackerFactory =
-                index.isPrimaryIndex() ? new PrimaryIndexOperationTrackerFactory(index.getDatasetId().getId())
-                        : new SecondaryIndexOperationTrackerFactory(index.getDatasetId().getId());
+                index.isPrimaryIndex() ? new PrimaryIndexOperationTrackerFactory(datasetId)
+                        : new SecondaryIndexOperationTrackerFactory(datasetId);
         ILSMIOOperationCallbackFactory ioOpCallbackFactory = LSMBTreeIOOperationCallbackFactory.INSTANCE;
         IStorageComponentProvider storageComponentProvider = appContext.getStorageComponentProvider();
         if (isNewUniverse()) {
             LSMBTreeLocalResourceFactory lsmBtreeFactory = new LSMBTreeLocalResourceFactory(
                     storageComponentProvider.getStorageManager(), typeTraits, cmpFactories, null, null, null,
                     opTrackerFactory, ioOpCallbackFactory, storageComponentProvider.getMetadataPageManagerFactory(),
-                    new AsterixVirtualBufferCacheProvider(index.getDatasetId().getId()),
+                    new AsterixVirtualBufferCacheProvider(datasetId),
                     storageComponentProvider.getIoOperationSchedulerProvider(),
                     appContext.getMetadataMergePolicyFactory(), GlobalConfig.DEFAULT_COMPACTION_POLICY_PROPERTIES, true,
                     bloomFilterKeyFields, appContext.getBloomFilterFalsePositiveRate(), true, null);
             DatasetLocalResourceFactory dsLocalResourceFactory =
-                    new DatasetLocalResourceFactory(index.getDatasetId().getId(), lsmBtreeFactory);
+                    new DatasetLocalResourceFactory(datasetId, lsmBtreeFactory);
             // TODO(amoudi) Creating the index should be done through the same code path as other indexes
             // This is to be done by having a metadata dataset associated with each index
             IIndexBuilder indexBuilder = new IndexBuilder(ncServiceCtx, storageComponentProvider.getStorageManager(),
diff --git a/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/ThreadSafe.java b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/ThreadSafe.java
new file mode 100644
index 0000000..2766c37
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/ThreadSafe.java
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.hyracks.util.annotations;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * The type to which this annotation is applied is thread-safe.
+ */
+@Documented
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.SOURCE)
+public @interface ThreadSafe {
+}
\ No newline at end of file

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 6
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Ian Maxon <im...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>


Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app/2239/ (3/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/6898/ (5/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-no-installer-app/2019/ (7/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/6894/ (2/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3: Integration-Tests-1

Integration Tests Failed

https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/4409/ : UNSTABLE

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-asterix-app/2055/ (8/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

WARNING: THIS CHANGE CONTAINS CROSS-PRODUCT CHANGES IN:
* asterixdb
* hyracks-fullstack

PLEASE REVIEW CAREFULLY AND LOOK FOR API CHANGES!

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-verify-storage/1969/ (1/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-sonar/5398/ (9/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-source-assemblies/1679/ (2/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Ian Maxon (Code Review)" <do...@asterixdb.incubator.apache.org>.
Ian Maxon has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

(1 comment)

https://asterix-gerrit.ics.uci.edu/#/c/2112/5/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
File asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java:

PS5, Line 115: 
             :     private long getTotalSize(int datasetId) {
             :         return storageProperties.getMemoryComponentPageSize() * (long) getNumPages(datasetId);
             :     }
This is an underestimate isn't it? It should also take into account the number of memory components, yes?


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Ian Maxon <im...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: Yes

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app/2240/ (6/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Anon. E. Moose (Code Review)" <do...@asterixdb.incubator.apache.org>.
Anon. E. Moose #1000171 has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

Analytics Compatibility Tests Successful Build 2858
: SUCCESS

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Ian Maxon <im...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

BAD Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/2033/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

BAD Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/2030/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-cancellation-test/1354/ (8/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-verify-storage/1962/ (7/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/4417/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/hyracks-gerrit/1343/ (4/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-source-assemblies/1682/ (9/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5: Contrib+1

BAD Compatibility Tests Successful

https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/2038/ : SUCCESS

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-verify-storage/1958/ (1/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2: Integration-Tests-1

Integration Tests Failed

https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/4406/ : UNSTABLE

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

Build Started https://asterix-jenkins.ics.uci.edu/job/hyracks-gerrit/1347/ (3/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-no-installer-app/2020/ (9/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Murtadha Hubail (Code Review)" <do...@asterixdb.incubator.apache.org>.
Murtadha Hubail has uploaded a new patch set (#2).

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................

[ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

- user model changes: no
- storage format changes: no
- interface changes: yes
  Added IDatasetMemoryManager to manage datasets memory
  reservation and allocation.

Details:
- Reserve metadata datasets memory to allow them to be opened
  when needed.
- Close all datasets at the end of recovery to clear
  used memory and flush all recovered datasets.
- Add UngracefulShutdownNCApplication to force recovery
  to run on AsterixHyracksIntegrationUtil.
- Refactor the use of firstAvilableUserDatasetID to check
  for metadata datasets.
- Add ThreadSafe annotation.
- Add test case for RecoveryManager after creating multiple
  datasets.

Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
A asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetMemoryManager.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
A asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
A hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/ThreadSafe.java
14 files changed, 555 insertions(+), 67 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/12/2112/2
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4: Contrib-1

BAD Compatibility Tests Failed

https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/2034/ : UNSTABLE

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app-sql-execution/1356/ (1/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-sonar/5403/ (6/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4: Integration-Tests+1

Integration Tests Successful

https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/4410/ : SUCCESS

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-asterix-app/2051/ (10/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/6906/ (6/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-cancellation-test/1362/ (2/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-verify-storage/1961/ (10/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-sonar/5402/ (4/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app-sql-execution/1364/ (4/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org>.
Michael Blow has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

(6 comments)

https://asterix-gerrit.ics.uci.edu/#/c/2112/4/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
File asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java:

PS4, Line 60: String.valueOf("128MB")
remove redundant String.valueOf()


PS4, Line 61: String.valueOf("32")
remove redundant String.valueOf()


https://asterix-gerrit.ics.uci.edu/#/c/2112/4/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
File asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java:

PS4, Line 35: ConcurrentHashMap
no need to be concurrent, all access is synchronized


PS4, Line 36: ConcurrentHashMap
no need to be concurrent, all access is synchronized


PS4, Line 37: AtomicLong
no need for atomic- all writes are synchronized


https://asterix-gerrit.ics.uci.edu/#/c/2112/4/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
File asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java:

Line 308:             throw new IllegalStateException("Failed to reserve memory for metadata dataset(" + datasetId + ")");
space?


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: Yes

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5: Integration-Tests+1

Integration Tests Successful

https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/4417/ : SUCCESS

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Ian Maxon <im...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Murtadha Hubail (Code Review)" <do...@asterixdb.incubator.apache.org>.
Hello Jenkins,

I'd like you to reexamine a change.  Please visit

    https://asterix-gerrit.ics.uci.edu/2112

to look at the new patch set (#3).

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................

[ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

- user model changes: no
- storage format changes: no
- interface changes: yes
  Added IDatasetMemoryManager to manage datasets memory
  reservation and allocation.

Details:
- Reserve metadata datasets memory to allow them to be opened
  when needed.
- Close all datasets at the end of recovery to clear
  used memory and flush all recovered datasets.
- Add UngracefulShutdownNCApplication to force recovery
  to run on AsterixHyracksIntegrationUtil.
- Refactor the use of firstAvilableUserDatasetID to check
  for metadata datasets.
- Add ThreadSafe annotation.
- Add test case for RecoveryManager after creating multiple
  datasets.

Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/RecoveryManager.java
A asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetMemoryManager.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
A asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
A hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/ThreadSafe.java
14 files changed, 563 insertions(+), 65 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/12/2112/3
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Murtadha Hubail (Code Review)" <do...@asterixdb.incubator.apache.org>.
Murtadha Hubail has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

(6 comments)

https://asterix-gerrit.ics.uci.edu/#/c/2112/4/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
File asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java:

PS4, Line 60: "128MB", ""));
> remove redundant String.valueOf()
Done


PS4, Line 61: "32", ""));
> remove redundant String.valueOf()
Done


https://asterix-gerrit.ics.uci.edu/#/c/2112/4/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
File asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java:

PS4, Line 35: ashMap<>();
> no need to be concurrent, all access is synchronized
had async reporting API in mind. Done.


PS4, Line 36: 
> no need to be concurrent, all access is synchronized
Done


PS4, Line 37: StoragePro
> no need for atomic- all writes are synchronized
Done


https://asterix-gerrit.ics.uci.edu/#/c/2112/4/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
File asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java:

Line 308:             throw new IllegalStateException("Failed to reserve memory for metadata dataset (" + datasetId + ")");
> space?
Done, I think.


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: Yes

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-cancellation-test/1355/ (5/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-cancellation-test/1351/ (7/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Murtadha Hubail (Code Review)" <do...@asterixdb.incubator.apache.org>.
Murtadha Hubail has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

(1 comment)

https://asterix-gerrit.ics.uci.edu/#/c/2112/5/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
File asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java:

PS5, Line 115: 
             :     private long getTotalSize(int datasetId) {
             :         return storageProperties.getMemoryComponentPageSize() * (long) getNumPages(datasetId);
             :     }
> This is an underestimate isn't it? It should also take into account the num
This is the total. We distribute the pages on the memory components.


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Ian Maxon <im...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: Yes

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Michael Blow (Code Review)" <do...@asterixdb.incubator.apache.org>.
Michael Blow has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5: Code-Review+2

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-asterix-app/2054/ (2/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

BAD Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/2038/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-source-assemblies/1683/ (4/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Murtadha Hubail (Code Review)" <do...@asterixdb.incubator.apache.org>.
Hello Jenkins,

I'd like you to reexamine a change.  Please visit

    https://asterix-gerrit.ics.uci.edu/2112

to look at the new patch set (#4).

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................

[ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

- user model changes: no
- storage format changes: no
- interface changes: yes
  Added IDatasetMemoryManager to manage datasets memory
  reservation and allocation.

Details:
- Reserve metadata datasets memory to allow them to be opened
  when needed.
- Add UngracefulShutdownNCApplication to force recovery
  to run on AsterixHyracksIntegrationUtil.
- Refactor the use of firstAvilableUserDatasetID to check
  for metadata datasets.
- Add ThreadSafe annotation.
- Add test case for RecoveryManager after creating multiple
  datasets.

Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
A asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetMemoryManager.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
A asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
A hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/ThreadSafe.java
13 files changed, 569 insertions(+), 65 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/12/2112/4
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/6895/ (5/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

BAD Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/2034/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-no-installer-app/2023/ (6/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Murtadha Hubail (Code Review)" <do...@asterixdb.incubator.apache.org>.
Hello Jenkins,

I'd like you to reexamine a change.  Please visit

    https://asterix-gerrit.ics.uci.edu/2112

to look at the new patch set (#5).

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................

[ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

- user model changes: no
- storage format changes: no
- interface changes: yes
  Added IDatasetMemoryManager to manage datasets memory
  reservation and allocation.

Details:
- Reserve metadata datasets memory to allow them to be opened
  when needed.
- Add UngracefulShutdownNCApplication to force recovery
  to run on AsterixHyracksIntegrationUtil.
- Refactor the use of firstAvilableUserDatasetID to check
  for metadata datasets.
- Add ThreadSafe annotation.
- Add test case for RecoveryManager after creating multiple
  datasets.

Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
---
M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/common/AsterixHyracksIntegrationUtil.java
M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCAppRuntimeContext.java
A asterixdb/asterix-app/src/test/java/org/apache/asterix/test/txn/RecoveryManagerTest.java
A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDatasetMemoryManager.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/INcApplicationContext.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
A asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetResource.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetVirtualBufferCaches.java
M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/MetadataIndexImmutableProperties.java
A asterixdb/asterix-common/src/test/java/org/apache/asterix/test/context/DatasetMemoryManagerTest.java
M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataBootstrap.java
A hyracks-fullstack/hyracks/hyracks-util/src/main/java/org/apache/hyracks/util/annotations/ThreadSafe.java
13 files changed, 568 insertions(+), 65 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb refs/changes/12/2112/5
-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 1:

WARNING: THIS CHANGE CONTAINS CROSS-PRODUCT CHANGES IN:
* asterixdb
* hyracks-fullstack

PLEASE REVIEW CAREFULLY AND LOOK FOR API CHANGES!

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-cancellation-test/1350/ (5/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-source-assemblies/1690/ (3/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-asterix-app/2062/ (10/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app/2251/ (9/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

Build Started https://asterix-jenkins.ics.uci.edu/job/hyracks-gerrit/1348/ (9/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app/2243/ (7/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-sonar/5399/ (8/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/4406/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3:

Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/4409/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-no-installer-app/2024/ (3/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-verify-storage/1957/ (8/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-no-installer-app/2034/ (8/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

WARNING: THIS CHANGE CONTAINS CROSS-PRODUCT CHANGES IN:
* asterixdb
* hyracks-fullstack

PLEASE REVIEW CAREFULLY AND LOOK FOR API CHANGES!

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

BAD Compatibility Tests Started https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/2035/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-verify-asterix-app/2050/ (10/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app/2244/ (10/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-sonar/5410/ (7/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

Build Started https://asterix-jenkins.ics.uci.edu/job/hyracks-gerrit/1355/ (5/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-source-assemblies/1678/ (6/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 5:

WARNING: THIS CHANGE CONTAINS CROSS-PRODUCT CHANGES IN:
* asterixdb
* hyracks-fullstack

PLEASE REVIEW CAREFULLY AND LOOK FOR API CHANGES!

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 5
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: abdullah alamoudi <ba...@gmail.com>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 1:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app-sql-execution/1352/ (1/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app-sql-execution/1353/ (3/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-asterix-app-sql-execution/1357/ (1/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 3: Contrib+1

BAD Compatibility Tests Successful

https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/2033/ : SUCCESS

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 3
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4: Contrib+1

BAD Compatibility Tests Successful

https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/2035/ : SUCCESS

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

Build Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-notopic/6899/ (2/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 4:

Integration Tests Started https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-integration-tests/4410/

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 4
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2: Contrib+1

BAD Compatibility Tests Successful

https://asterix-jenkins.ics.uci.edu/job/asterixbad-compat/2030/ : SUCCESS

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No

Change in asterixdb[master]: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager

Posted by "Jenkins (Code Review)" <do...@asterixdb.incubator.apache.org>.
Jenkins has posted comments on this change.

Change subject: [ASTERIXDB-2081][STO] Introduce DatasetMemoryManager
......................................................................


Patch Set 2:

Build Started https://asterix-jenkins.ics.uci.edu/job/hyracks-gerrit/1344/ (4/10)

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2112
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: Ica76b3c8eca6f7d2ad1d962fb5ef84267c258571
Gerrit-PatchSet: 2
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <mh...@apache.org>
Gerrit-Reviewer: Jenkins <je...@fulliautomatix.ics.uci.edu>
Gerrit-HasComments: No