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/10 05:30:59 UTC
incubator-mnemonic git commit: MNEMONIC-376: Support shrinkable
durable memory service
Repository: incubator-mnemonic
Updated Branches:
refs/heads/master 70a9c0f46 -> 67f074a20
MNEMONIC-376: Support shrinkable 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/67f074a2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/tree/67f074a2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/diff/67f074a2
Branch: refs/heads/master
Commit: 67f074a20b0452cfde71572d7377687f750fc34a
Parents: 70a9c0f
Author: paleyss <pa...@gmail.com>
Authored: Sat Oct 7 22:48:36 2017 -0700
Committer: paleyss <pa...@gmail.com>
Committed: Mon Oct 9 21:34:59 2017 -0700
----------------------------------------------------------------------
.../org/apache/mnemonic/CommonAllocator.java | 10 +++++++++
.../mnemonic/NonVolatileMemAllocator.java | 22 ++++++++++++++++++--
.../org/apache/mnemonic/SysMemAllocator.java | 22 ++++++++++++++++++--
.../apache/mnemonic/VolatileMemAllocator.java | 22 ++++++++++++++++++--
.../service/memory/MemoryServiceFeature.java | 3 ++-
5 files changed, 72 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/67f074a2/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 5325d86..1e0cdf5 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/CommonAllocator.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/CommonAllocator.java
@@ -55,6 +55,16 @@ public abstract class CommonAllocator<A extends CommonAllocator<A>> implements A
public abstract long expand(long size);
/**
+ * shrink this memory pool
+ *
+ * @param size
+ * specify the size to shrink
+ *
+ * @return the real size shrinked
+ */
+ public abstract long shrink(long size);
+
+ /**
* set a reclaimer to reclaim memory buffer
*
* @param reclaimer
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/67f074a2/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 8d8f7bc..4058139 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/NonVolatileMemAllocator.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/NonVolatileMemAllocator.java
@@ -31,6 +31,7 @@ import java.nio.ByteBuffer;
import static org.apache.mnemonic.service.memory.MemoryServiceFeature.EXPANDABLE;
import static org.apache.mnemonic.service.memory.MemoryServiceFeature.QUERYABLE;
+import static org.apache.mnemonic.service.memory.MemoryServiceFeature.SHRINKABLE;
/**
* manage a big native persistent memory pool through underlying memory service.
@@ -728,10 +729,27 @@ public class NonVolatileMemAllocator extends RestorableAllocator<NonVolatileMemA
long ret = 0L;
if (null != m_features) {
if (m_features.contains(EXPANDABLE)) {
- return m_nvmasvc.adjustCapacity(m_nid, size);
+ ret = m_nvmasvc.adjustCapacity(m_nid, size);
+ } else {
+ throw new ConfigurationException("Do not support expand operation");
}
} else {
- throw new ConfigurationException("Do not support expand operation");
+ throw new ConfigurationException("Do not support features");
+ }
+ return ret;
+ }
+
+ @Override
+ public long shrink(long size) {
+ long ret = 0L;
+ if (null != m_features) {
+ if (m_features.contains(SHRINKABLE)) {
+ ret = m_nvmasvc.adjustCapacity(m_nid, (-1) * size);
+ } else {
+ throw new ConfigurationException("Do not support shrink operation");
+ }
+ } else {
+ throw new ConfigurationException("Do not support features");
}
return ret;
}
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/67f074a2/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 827b704..37f06a2 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/SysMemAllocator.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/SysMemAllocator.java
@@ -31,6 +31,7 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;
import static org.apache.mnemonic.service.memory.MemoryServiceFeature.EXPANDABLE;
+import static org.apache.mnemonic.service.memory.MemoryServiceFeature.SHRINKABLE;
/**
* manage a system memory pool as a internal volatile allocator
@@ -352,10 +353,27 @@ public class SysMemAllocator extends CommonAllocator<SysMemAllocator> {
long ret = 0L;
if (null != m_features) {
if (m_features.contains(EXPANDABLE)) {
- return ret = size;
+ ret = size;
+ } else {
+ throw new ConfigurationException("Do not support expand operation");
}
} else {
- throw new ConfigurationException("Do not support expand operation");
+ throw new ConfigurationException("Do not support features");
+ }
+ return ret;
+ }
+
+ @Override
+ public long shrink(long size) {
+ long ret = 0L;
+ if (null != m_features) {
+ if (m_features.contains(SHRINKABLE)) {
+ ret = size;
+ } else {
+ throw new ConfigurationException("Do not support shrink operation");
+ }
+ } else {
+ throw new ConfigurationException("Do not support features");
}
return ret;
}
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/67f074a2/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 b54dfad..1392a22 100644
--- a/mnemonic-core/src/main/java/org/apache/mnemonic/VolatileMemAllocator.java
+++ b/mnemonic-core/src/main/java/org/apache/mnemonic/VolatileMemAllocator.java
@@ -31,6 +31,7 @@ import java.nio.ByteBuffer;
import static org.apache.mnemonic.service.memory.MemoryServiceFeature.EXPANDABLE;
import static org.apache.mnemonic.service.memory.MemoryServiceFeature.QUERYABLE;
+import static org.apache.mnemonic.service.memory.MemoryServiceFeature.SHRINKABLE;
/**
* manage a big native memory pool through underlying memory service.
@@ -150,10 +151,27 @@ public class VolatileMemAllocator extends RestorableAllocator<VolatileMemAllocat
long ret = 0L;
if (null != m_features) {
if (m_features.contains(EXPANDABLE)) {
- return m_vmasvc.adjustCapacity(m_nid, size);
+ ret = m_vmasvc.adjustCapacity(m_nid, size);
+ } else {
+ throw new ConfigurationException("Do not support expand operation");
}
} else {
- throw new ConfigurationException("Do not support expand operation");
+ throw new ConfigurationException("Do not support features");
+ }
+ return ret;
+ }
+
+ @Override
+ public long shrink(long size) {
+ long ret = 0L;
+ if (null != m_features) {
+ if (m_features.contains(SHRINKABLE)) {
+ ret = m_vmasvc.adjustCapacity(m_nid, (-1) * size);
+ } else {
+ throw new ConfigurationException("Do not support shrink operation");
+ }
+ } else {
+ throw new ConfigurationException("Do not support features");
}
return ret;
}
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/67f074a2/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 3a6073f..ee607c0 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
@@ -23,7 +23,8 @@ public enum MemoryServiceFeature {
TRANSACTABLE(3),
QUERYABLE(4),
ABSTRACTADDRESSING(5),
- EXPANDABLE(6);
+ EXPANDABLE(6),
+ SHRINKABLE(7);
private int value;