‎02-03-2016 03:07 PM
Hello,
Attached class get all users with opened transactions.
No exception is throwed but mgwmapp.exe process still running after MegaRoot.close().
Does somebody knows were i made a mistake ?
Regards,
--
Julien Schneider
Solved! Go to Solution.
‎10-03-2016 02:52 PM
Hello,
Proposed solution did not solve the problem fo multiple MegaRoot opened on one MegaApplication instance. (so i use my task killing method).
But proposed solution solved the issue of my first post.
Thanks and regards,
‎09-03-2016 09:24 AM
OK, i'll try.
Note that this problem append only when i get data from MegaEnvironnements or when i open more than one MegaRoot.
Before Hopex this batch ran on MEGA 2009 and did not have this issue.
All by other batchs which open only one MegaRoot on a MegaDatabase do not have this issue.
Thanks and regards,
‎07-03-2016 04:57 PM
Hello,
This is a know issue when calling Mega from outside Java programs. The workaround will work indeed, but you can do it more properly by releasing all java objects that belong to Mega : MegaApplication, MegaEnvironments, MegaTransaction...etc. before your program terminates
All these objects should be released by calling the java method .release() when the object is no more used.
Thus, the process should be killed implicitly.
‎07-03-2016 03:20 PM
Workaround, kill the process "manually" :
/**
* Not really clean, but if MEGA is not closed automatically then use this method...
*
* @param ma MegaApplication
* @throws IOException
* @throws InterruptedException
*/
private void killMegaApplication(MegaApplication ma) throws IOException,InterruptedException{
logger.debug("START killMegaApplication(MegaApplication ma)");
if(ma==null) return;
String megaprocessid = ma.processID();
logger.debug("Application process ID from MEGA : "+megaprocessid);
megaprocessid = megaprocessid.toUpperCase();
String digits = "0123456789ABCDEF";
int i=0;
String finalMegaProcessId = "";
while(i<megaprocessid.length()){
if(digits.contains(new String(""+megaprocessid.charAt(i)))){
finalMegaProcessId += megaprocessid.charAt(i);
}
i++;
}
logger.debug("Final application process ID after removing non correct char : "+finalMegaProcessId);
int decimal = Integer.parseInt(finalMegaProcessId, 16);
String commandLine = "taskkill /PID "+decimal+" /T /F";
logger.info("Killing MEGA process : "+commandLine);
Runtime.getRuntime().exec(commandLine);
Thread.sleep(1000);
logger.debug("END killMegaApplication(MegaApplication ma)");
}
FYI : my version is HOPEX V1R3 CP12