2525import java .util .Set ;
2626import java .util .concurrent .atomic .AtomicBoolean ;
2727
28+ import org .eclipse .core .internal .jobs .JobManager ;
2829import org .eclipse .core .runtime .IStatus ;
2930import org .eclipse .core .runtime .Status ;
3031import org .eclipse .core .runtime .jobs .Job ;
@@ -181,6 +182,7 @@ public static boolean waitForJobs(String owner, Object jobFamily, long minTimeMs
181182 // only uninteresting jobs running
182183 break ;
183184 }
185+ jobs .forEach (Job ::wakeUp );
184186
185187 if (!Collections .disjoint (runningJobs , jobs )) {
186188 // There is a job which runs already quite some time, don't wait for it to avoid test timeouts
@@ -210,11 +212,8 @@ public static Object[] getUsualJobFamiliesToIgnore() {
210212 return new Object [] { ProcessConsole .class , AbstractReconciler .class };
211213 }
212214
213- private static void wakeUpSleepingJobs (Object family ) {
214- List <Job > sleepingJobs = getSleepingJobs (family );
215- for (Job job : sleepingJobs ) {
216- job .wakeUp ();
217- }
215+ private static void wakeUpSleepingJobs (Object jobFamily ) {
216+ Job .getJobManager ().wakeUp (jobFamily );
218217 }
219218
220219 static Set <Job > runningJobs = new LinkedHashSet <>();
@@ -235,6 +234,7 @@ private static String dumpRunningOrWaitingJobs(List<Job> jobs) {
235234 runningJobs .add (job );
236235 sb .append ("\n '" ).append (job .toString ()).append ("'/" );
237236 sb .append (job .getClass ().getName ());
237+ sb .append (":" ).append (JobManager .printState (job ));
238238 Thread thread = job .getThread ();
239239 if (thread != null ) {
240240 ThreadInfo [] threadInfos = ManagementFactory .getThreadMXBean ().getThreadInfo (new long [] { thread .threadId () }, true , true );
@@ -264,17 +264,6 @@ public static List<Job> getRunningOrWaitingJobs(Object jobFamily, Object... excl
264264 return running ;
265265 }
266266
267- private static List <Job > getSleepingJobs (Object family ) {
268- List <Job > sleeping = new ArrayList <>();
269- Job [] jobs = Job .getJobManager ().find (family );
270- for (Job job : jobs ) {
271- if (job .getState () == Job .SLEEPING ) {
272- sleeping .add (job );
273- }
274- }
275- return sleeping ;
276- }
277-
278267 private static boolean isRunningOrWaitingJob (Job job ) {
279268 int state = job .getState ();
280269 return (state == Job .RUNNING || state == Job .WAITING );
0 commit comments