mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
do not start excessive number of pre-loaded processes
This commit is contained in:
@@ -546,11 +546,9 @@ public class BuildManager implements ApplicationComponent{
|
||||
runCommand(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
LOG.info("Cancelling preloaded process for project " + projectPath);
|
||||
Pair<RequestFuture<PreloadedProcessMessageHandler>, OSProcessHandler> pair = takePreloadedProcess(projectPath);
|
||||
if (pair != null) {
|
||||
final RequestFuture<PreloadedProcessMessageHandler> future = pair.first;
|
||||
LOG.info("Cancelling preloaded process, sessionID=" + future.getRequestID());
|
||||
myMessageDispatcher.cancelSession(future.getRequestID());
|
||||
// waiting for preloaded process from project's task queue guarantees no build is started for this project
|
||||
// until this one gracefully exits and closes all its storages
|
||||
@@ -561,9 +559,6 @@ public class BuildManager implements ApplicationComponent{
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
LOG.info("takePreloadedProcess() returned null");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -752,12 +747,14 @@ public class BuildManager implements ApplicationComponent{
|
||||
if (Registry.is("compiler.process.preload") && !project.isDisposed()) {
|
||||
runCommand(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
final Future<Pair<RequestFuture<PreloadedProcessMessageHandler>, OSProcessHandler>> preloadResult = launchPreloadedBuildProcess(project, projectTaskQueue);
|
||||
myPreloadedBuilds.put(projectPath, preloadResult);
|
||||
}
|
||||
catch (Exception e) {
|
||||
LOG.info("Error pre-loading build process for project " + projectPath, e);
|
||||
if (!myPreloadedBuilds.containsKey(projectPath)) {
|
||||
try {
|
||||
final Future<Pair<RequestFuture<PreloadedProcessMessageHandler>, OSProcessHandler>> preloadResult = launchPreloadedBuildProcess(project, projectTaskQueue);
|
||||
myPreloadedBuilds.put(projectPath, preloadResult);
|
||||
}
|
||||
catch (Exception e) {
|
||||
LOG.info("Error pre-loading build process for project " + projectPath, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -75,19 +75,11 @@ class BuildMessageDispatcher extends SimpleChannelInboundHandlerAdapter<CmdlineR
|
||||
}
|
||||
|
||||
public void cancelSession(UUID sessionId) {
|
||||
LOG.info("Cancelling session " + sessionId);
|
||||
if (myCanceledSessions.add(sessionId)) {
|
||||
final Channel channel = getConnectedChannel(sessionId);
|
||||
if (channel != null) {
|
||||
channel.writeAndFlush(CmdlineProtoUtil.toMessage(sessionId, CmdlineProtoUtil.createCancelCommand()));
|
||||
LOG.info("Cancelling session " + sessionId + "; message sent");
|
||||
}
|
||||
else {
|
||||
LOG.info("Cancelling session " + sessionId + "; channel not ready");
|
||||
}
|
||||
}
|
||||
else {
|
||||
LOG.info("Cancelling session " + sessionId + "; already marked as 'cancelled'");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user