@Override public Boolean call() throws Exception { origManagementContext.getGarbageCollector().gcIteration(); List<Task<?>> tasksAfter = ((BasicExecutionManager)origManagementContext.getExecutionManager()).getAllTasks(); LOG.info("tasks after disabling HA, "+tasksAfter.size()+": "+tasksAfter); return tasksAfter.isEmpty(); } }).runRequiringTrue();
@Override public Boolean call() throws Exception { origManagementContext.getGarbageCollector().gcIteration(); List<Task<?>> tasksAfter = ((BasicExecutionManager)origManagementContext.getExecutionManager()).getAllTasks(); log.info("tasks after disabling HA, "+tasksAfter.size()+": "+tasksAfter); return tasksAfter.isEmpty(); } }).runRequiringTrue();
for (Task<?> t: execMgmt.getAllTasks()) { if (task.equals(t.getSubmittedByTask())) { if (mode.isAllowedToInterruptAllSubmittedTasks() || BrooklynTaskTags.isTransient(t)) {
@Override public Boolean call() throws Exception { ((LocalManagementContext)mgmt).getGarbageCollector().gcIteration(); long taskCountAfterAtOld = ((BasicExecutionManager)mgmt.getExecutionManager()).getNumIncompleteTasks(); List<Task<?>> tasks = ((BasicExecutionManager)mgmt.getExecutionManager()).getAllTasks(); int unendedTasks = 0, extraAllowedMax = 0; for (Task<?> t: tasks) { if (!t.isDone()) { if (skipKnownBackgroundTasks) { if (t.toString().indexOf("ssh-location cache cleaner")>=0) { extraAllowedMax++; } } unendedTasks++; } } LOG.info("Count of incomplete tasks now "+taskCountAfterAtOld+", "+unendedTasks+" unended" + (extraAllowedMax>0 ? " ("+extraAllowedMax+" allowed)" : "") + "; tasks remembered are: "+ tasks); return taskCountAfterAtOld<=allowedMax+extraAllowedMax; } }).runRequiringTrue();
@Test(groups="Integration") public void testSubscriptionAndEffectorTasksGced() throws Exception { BasicExecutionManager em = (BasicExecutionManager) app.getManagementContext().getExecutionManager(); // allow background enrichers to complete Time.sleep(Duration.ONE_SECOND); forceGc(); List<Task<?>> t1 = em.getAllTasks(); TestEntity entity = app.createAndManageChild(EntitySpec.create(TestEntity.class)); entity.sensors().set(TestEntity.NAME, "bob"); entity.invoke(TestEntity.MY_EFFECTOR, ImmutableMap.<String,Object>of()).get(); Entities.destroy(entity); Time.sleep(Duration.ONE_SECOND); forceGc(); List<Task<?>> t2 = em.getAllTasks(); Assert.assertEquals(t1.size(), t2.size(), "lists are different:\n"+t1+"\n"+t2+"\n"); }
LOG.warn(classAndMethodName+": OOME at iteration="+i); ExecutionManager em = app.getManagementContext().getExecutionManager(); Collection<Task<?>> tasks = ((BasicExecutionManager)em).getAllTasks(); LOG.info("TASKS count "+tasks.size()+": "+tasks); throw e;
List<Task<?>> tasksBefore = ((BasicExecutionManager)origManagementContext.getExecutionManager()).getAllTasks(); LOG.info("tasks before disabling HA, "+tasksBefore.size()+": "+tasksBefore); Assert.assertFalse(tasksBefore.isEmpty());
((BasicExecutionManager)origManagementContext.getExecutionManager()).getAllTasks());
origManagementContext.getRebindManager().forcePersistNow(); List<Task<?>> tasksBefore = ((BasicExecutionManager)origManagementContext.getExecutionManager()).getAllTasks(); log.info("tasks before disabling HA, "+tasksBefore.size()+": "+tasksBefore); Assert.assertFalse(tasksBefore.isEmpty());