Murtadha Hubail has uploaded a new change for review.
https://asterix-gerrit.ics.uci.edu/3070
Change subject: [ASTERIXDB-2494][RT] Log Allocated Datasets on Allocation
Failure
......................................................................
[ASTERIXDB-2494][RT] Log Allocated Datasets on Allocation Failure
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Log the currently allocated datasets on dataset memory
allocation failure.
Change-Id: Iefabb9c080c8937a2d2fd928dadde4993d4dd226
---
M
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
M
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetMemoryManager.java
2 files changed, 26 insertions(+), 0 deletions(-)
git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb
refs/changes/70/3070/1
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 1dff69d..486cd45 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
@@ -579,6 +579,8 @@
if (!dsInfo.isMemoryAllocated() && !dsInfo.isExternal()) {
while (!memoryManager.allocate(datasetId)) {
if (!evictCandidateDataset()) {
+ LOGGER.warn("failed to allocate memory for dataset {}.
Currently allocated {}",
+ dsInfo::getDatasetID, ((DatasetMemoryManager)
memoryManager)::getState);
throw new HyracksDataException("Cannot allocate
dataset " + dsInfo.getDatasetID()
+ " memory since memory budget would be
exceeded.");
}
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
index 34d0774..1b4b48e 100644
---
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
@@ -24,9 +24,14 @@
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.JSONUtil;
import org.apache.hyracks.util.annotations.ThreadSafe;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.ObjectNode;
@ThreadSafe
public class DatasetMemoryManager implements IDatasetMemoryManager {
@@ -114,6 +119,14 @@
: storageProperties.getMemoryComponentNumPages();
}
+ public JsonNode getState() {
+ final ObjectNode state = JSONUtil.createObject();
+ state.put("availableBudget", available);
+ state.set("allocated", budgetMapToJsonArray(allocatedMap));
+ state.set("reserved", budgetMapToJsonArray(reservedMap));
+ return state;
+ }
+
private long getTotalSize(int datasetId) {
return storageProperties.getMemoryComponentPageSize() * (long)
getNumPages(datasetId);
}
@@ -126,4 +139,15 @@
final Long reserved = reservedMap.get(datasetId);
allocatedMap.put(datasetId, reserved);
}
+
+ private static ArrayNode budgetMapToJsonArray(Map<Integer, Long>
memorytMap) {
+ final ArrayNode array = JSONUtil.createArray();
+ memorytMap.forEach((k, v) -> {
+ final ObjectNode dataset = JSONUtil.createObject();
+ dataset.put("datasetId", k);
+ dataset.put("budget", v);
+ array.add(dataset);
+ });
+ return array;
+ }
}
\ No newline at end of file
--
To view, visit https://asterix-gerrit.ics.uci.edu/3070
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Iefabb9c080c8937a2d2fd928dadde4993d4dd226
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Murtadha Hubail <[email protected]>