Made sure the directories of the core dump exist. This logic should go away once the paths of the core dump files are propgated correctly.
diff --git a/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/lifecycle/LifeCycleComponentManager.java b/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/lifecycle/LifeCycleComponentManager.java
index 8f0580d..55fc94b 100644
--- a/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/lifecycle/LifeCycleComponentManager.java
+++ b/hyracks/hyracks-api/src/main/java/edu/uci/ics/hyracks/api/lifecycle/LifeCycleComponentManager.java
@@ -47,7 +47,7 @@
@Override
public void uncaughtException(Thread t, Throwable e) {
if (LOGGER.isLoggable(Level.SEVERE)) {
- LOGGER.severe("Uncaught Exception from thread" + t.getName() + " message:" + e.getMessage());
+ LOGGER.severe("Uncaught Exception from thread " + t.getName() + " message: " + e.getMessage());
e.printStackTrace();
}
try {
@@ -101,8 +101,12 @@
try {
if (dumpState) {
componentDumpPath = dumpPath + File.separator + component.getClass().getName() + "-coredump";
- componentDumpStream = new FileOutputStream(componentDumpPath);
-
+ File f = new File(componentDumpPath);
+ File parentDir = new File(f.getParent());
+ if (!parentDir.exists()) {
+ parentDir.mkdirs();
+ }
+ componentDumpStream = new FileOutputStream(f);
}
if (LOGGER.isLoggable(Level.SEVERE)) {
LOGGER.severe("Stopping component instance" + component.getClass().getName() + " dump state "
@@ -111,7 +115,7 @@
component.stop(dumpState, componentDumpStream);
} catch (Exception e) {
if (LOGGER.isLoggable(Level.SEVERE)) {
- LOGGER.severe("Exception in stopping component " + component.getClass().getName());
+ LOGGER.severe("Exception in stopping component " + component.getClass().getName() + e.getMessage());
}
} finally {
if (componentDumpStream != null) {