You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mnemonic.apache.org by ga...@apache.org on 2017/10/01 05:47:43 UTC

incubator-mnemonic git commit: MNEMONIC-375: Support expandable durable memory service

Repository: incubator-mnemonic
Updated Branches:
  refs/heads/master 50e2a574b -> 0280d047b


MNEMONIC-375: Support expandable durable memory service


Project: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/commit/0280d047
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/tree/0280d047
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/diff/0280d047

Branch: refs/heads/master
Commit: 0280d047b64ef81b26391dde2c3c611665038a2d
Parents: 50e2a57
Author: paleyss <pa...@gmail.com>
Authored: Fri Sep 29 23:02:17 2017 -0700
Committer: paleyss <pa...@gmail.com>
Committed: Fri Sep 29 23:21:09 2017 -0700

----------------------------------------------------------------------
 .../java/org/apache/mnemonic/CommonAllocator.java     | 10 ++++++++++
 .../org/apache/mnemonic/NonVolatileMemAllocator.java  | 14 ++++++++++++++
 .../java/org/apache/mnemonic/SysMemAllocator.java     | 14 ++++++++++++++
 .../org/apache/mnemonic/VolatileMemAllocator.java     | 14 ++++++++++++++
 .../mnemonic/service/memory/MemoryServiceFeature.java |  3 ++-
 5 files changed, 54 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/0280d047/mnemonic-core/src/main/java/org/apache/mnemonic/CommonAllocator.java
----------------------------------------------------------------------
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/CommonAllocator.java b/mnemonic-core/src/main/java/org/apache/mnemonic/CommonAllocator.java
index 3ca8a7b..6738568 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/CommonAllocator.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/CommonAllocator.java
@@ -44,6 +44,16 @@ public abstract class CommonAllocator<A extends CommonAllocator<A>> implements A
   }
 
   /**
+   * expand this memory pool
+   *
+   * @param size
+   *          specify the size to expand
+   *
+   * @return the real size expanded
+   */
+  public abstract long expand(long size);
+
+  /**
    * set a reclaimer to reclaim memory buffer
    * 
    * @param reclaimer

http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/0280d047/mnemonic-core/src/main/java/org/apache/mnemonic/NonVolatileMemAllocator.java
----------------------------------------------------------------------
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/NonVolatileMemAllocator.java b/mnemonic-core/src/main/java/org/apache/mnemonic/NonVolatileMemAllocator.java
index d81dabb..f2e1541 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/NonVolatileMemAllocator.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/NonVolatileMemAllocator.java
@@ -28,6 +28,7 @@ import org.flowcomputing.commons.resgc.ResReclaim;
 
 import java.nio.ByteBuffer;
 
+import static org.apache.mnemonic.service.memory.MemoryServiceFeature.EXPANDABLE;
 import static org.apache.mnemonic.service.memory.MemoryServiceFeature.QUERYABLE;
 
 /**
@@ -702,4 +703,17 @@ public class NonVolatileMemAllocator extends RestorableAllocator<NonVolatileMemA
     }
     return m_querable;
   }
+
+  @Override
+  public long expand(long size) {
+    long ret = 0L;
+    if (null != m_features) {
+      if (m_features.contains(EXPANDABLE)) {
+        return m_nvmasvc.adjustCapacity(m_nid, size);
+      }
+    } else {
+      throw new ConfigurationException("Do not support expand operation");
+    }
+    return ret;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/0280d047/mnemonic-core/src/main/java/org/apache/mnemonic/SysMemAllocator.java
----------------------------------------------------------------------
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/SysMemAllocator.java b/mnemonic-core/src/main/java/org/apache/mnemonic/SysMemAllocator.java
index 8b80c96..bd940fb 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/SysMemAllocator.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/SysMemAllocator.java
@@ -28,6 +28,8 @@ import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicLong;
 
+import static org.apache.mnemonic.service.memory.MemoryServiceFeature.EXPANDABLE;
+
 /**
  * manage a system memory pool as a internal volatile allocator
  * 
@@ -333,4 +335,16 @@ public class SysMemAllocator extends CommonAllocator<SysMemAllocator> {
     return ret;
   }
 
+  @Override
+  public long expand(long size) {
+    long ret = 0L;
+    if (null != m_features) {
+      if (m_features.contains(EXPANDABLE)) {
+        return ret = size;
+      }
+    } else {
+      throw new ConfigurationException("Do not support expand operation");
+    }
+    return ret;
+  }
 }

http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/0280d047/mnemonic-core/src/main/java/org/apache/mnemonic/VolatileMemAllocator.java
----------------------------------------------------------------------
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/VolatileMemAllocator.java b/mnemonic-core/src/main/java/org/apache/mnemonic/VolatileMemAllocator.java
index 7fa493c..71c6a26 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/VolatileMemAllocator.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/VolatileMemAllocator.java
@@ -28,6 +28,7 @@ import org.flowcomputing.commons.resgc.ResReclaim;
 
 import java.nio.ByteBuffer;
 
+import static org.apache.mnemonic.service.memory.MemoryServiceFeature.EXPANDABLE;
 import static org.apache.mnemonic.service.memory.MemoryServiceFeature.QUERYABLE;
 
 /**
@@ -141,6 +142,19 @@ public class VolatileMemAllocator extends RestorableAllocator<VolatileMemAllocat
     return this;
   }
 
+  @Override
+  public long expand(long size) {
+    long ret = 0L;
+    if (null != m_features) {
+      if (m_features.contains(EXPANDABLE)) {
+        return m_vmasvc.adjustCapacity(m_nid, size);
+      }
+    } else {
+      throw new ConfigurationException("Do not support expand operation");
+    }
+    return ret;
+  }
+
   /**
    * release the memory pool and close it.
    *

http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/0280d047/mnemonic-core/src/main/java/org/apache/mnemonic/service/memory/MemoryServiceFeature.java
----------------------------------------------------------------------
diff --git a/mnemonic-core/src/main/java/org/apache/mnemonic/service/memory/MemoryServiceFeature.java b/mnemonic-core/src/main/java/org/apache/mnemonic/service/memory/MemoryServiceFeature.java
index 1adb625..3a6073f 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/service/memory/MemoryServiceFeature.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/service/memory/MemoryServiceFeature.java
@@ -22,7 +22,8 @@ public enum MemoryServiceFeature {
   NONVOLATILE(2),
   TRANSACTABLE(3),
   QUERYABLE(4),
-  ABSTRACTADDRESSING(5);
+  ABSTRACTADDRESSING(5),
+  EXPANDABLE(6);
 
   private int value;