Murtadha Hubail has submitted this change and it was merged. 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 Reviewed-on: https://asterix-gerrit.ics.uci.edu/3070 Sonar-Qube: Jenkins <[email protected]> Reviewed-by: Murtadha Hubail <[email protected]> Tested-by: Jenkins <[email protected]> Contrib: Jenkins <[email protected]> Reviewed-by: Ali Alsuliman <[email protected]> --- 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(-) Approvals: Ali Alsuliman: Looks good to me, approved Jenkins: Verified; No violations found; Murtadha Hubail: Looks good to me, but someone else must approve Objections: Anon. E. Moose #1000171: Violations found 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: merged Gerrit-Change-Id: Iefabb9c080c8937a2d2fd928dadde4993d4dd226 Gerrit-PatchSet: 2 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Ali Alsuliman <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Michael Blow <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Till Westmann <[email protected]>
