Skip to content

Commit 66bcc7a

Browse files
authored
Merge pull request #203 from codeine-cd/codeine-201
codeine-201 run all project modify plugin runs on a single thread and…
2 parents a84aa5b + eeaeae1 commit 66bcc7a

File tree

2 files changed

+49
-11
lines changed

2 files changed

+49
-11
lines changed

src/common/codeine/jsons/global/ExperimentalConfJson.java

+6
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public class ExperimentalConfJson {
99
private String groups_plugin;
1010
private String after_project_modify_plugin;
1111
private String codeine_conf_modify_plugin;
12+
private boolean after_project_modify_plugin_async;
1213

1314
public String new_issue_link() {
1415
return new_issue_link;
@@ -28,5 +29,10 @@ public String after_project_modify_plugin() {
2829
public String codeine_conf_modify_plugin() {
2930
return codeine_conf_modify_plugin;
3031
}
32+
public boolean after_project_modify_plugin_async() {
33+
return after_project_modify_plugin_async;
34+
}
35+
36+
3137

3238
}
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,26 @@
11
package codeine.plugins;
22

3-
import java.util.List;
4-
import java.util.Map;
5-
6-
import javax.inject.Inject;
7-
8-
import org.apache.log4j.Logger;
9-
3+
import codeine.executer.ThreadPoolUtils;
104
import codeine.jsons.global.ExperimentalConfJsonStore;
115
import codeine.jsons.project.ProjectJson;
126
import codeine.model.Constants;
137
import codeine.model.Result;
148
import codeine.utils.os_process.ProcessExecuter.ProcessExecuterBuilder;
15-
169
import com.google.common.collect.Lists;
1710
import com.google.common.collect.Maps;
11+
import java.util.List;
12+
import java.util.Map;
13+
import java.util.concurrent.ThreadPoolExecutor;
14+
import javax.inject.Inject;
15+
import org.apache.log4j.Logger;
1816

1917
public class AfterProjectModifyPlugin {
2018

2119
@Inject private ExperimentalConfJsonStore experimentalConfJsonStore;
2220

2321
private static final Logger log = Logger.getLogger(AfterProjectModifyPlugin.class);
22+
private ThreadPoolExecutor executor = ThreadPoolUtils
23+
.newThreadPool(1, "AfterProjectModifyPlugin");
2424

2525
public enum StatusChange {add,remove,modify}
2626

@@ -34,10 +34,42 @@ public void call(ProjectJson projectJson, StatusChange newStatus, String usernam
3434
env.put(Constants.EXECUTION_ENV_PROJECT_STATUS, String.valueOf(newStatus));
3535
env.put(Constants.EXECUTION_ENV_PROJECT_NAME, projectJson.name());
3636
env.put(Constants.EXECUTION_ENV_USER_NAME, username);
37-
log.info("executing " + after_project_modify_plugin);
38-
Result result = new ProcessExecuterBuilder(cmd).timeoutInMinutes(2).env(env).build().execute();
39-
log.info("calling after_project_modify_plugin for project " + projectJson.name() + " finished " + result.toStringLong());
37+
if (experimentalConfJsonStore.get().after_project_modify_plugin_async()) {
38+
log.info("Queuing after_project_modify_plugin run");
39+
executor.execute(
40+
new PluginRunnable(after_project_modify_plugin, cmd, env, projectJson));
41+
}
42+
else {
43+
log.info("executing " + after_project_modify_plugin);
44+
Result result = new ProcessExecuterBuilder(cmd).timeoutInMinutes(2).env(env).build().execute();
45+
log.info("calling after_project_modify_plugin for project " + projectJson.name() + " finished " + result.toStringLong());
46+
}
47+
48+
4049
}
4150
}
4251

52+
private static class PluginRunnable implements Runnable {
53+
54+
private final String after_project_modify_plugin;
55+
private final List<String> cmd;
56+
private final Map<String, String> env;
57+
private final ProjectJson projectJson;
58+
59+
PluginRunnable(String after_project_modify_plugin, List<String> cmd,
60+
Map<String, String> env,
61+
ProjectJson projectJson) {
62+
this.after_project_modify_plugin = after_project_modify_plugin;
63+
this.cmd = cmd;
64+
this.env = env;
65+
this.projectJson = projectJson;
66+
}
67+
68+
@Override
69+
public void run() {
70+
log.info("executing " + after_project_modify_plugin);
71+
Result result = new ProcessExecuterBuilder(cmd).timeoutInMinutes(2).env(env).build().execute();
72+
log.info("calling after_project_modify_plugin for project " + projectJson.name() + " finished " + result.toStringLong());
73+
}
74+
}
4375
}

0 commit comments

Comments
 (0)