Mercurial > hg > thermostat
changeset 2550:1a9f0dc69d14
Add controller caching for when switching between vms
PR3267
Reviewed-by: neugens
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-December/021865.html
line wrap: on
line diff
--- a/notes/client-core/src/main/java/com/redhat/thermostat/notes/client/core/VmNotesControllerProvider.java Fri Dec 16 09:06:40 2016 -0500 +++ b/notes/client-core/src/main/java/com/redhat/thermostat/notes/client/core/VmNotesControllerProvider.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.notes.client.core; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import com.redhat.thermostat.common.ApplicationService; import com.redhat.thermostat.common.Clock; import com.redhat.thermostat.notes.common.VmNoteDAO; @@ -43,13 +46,18 @@ public class VmNotesControllerProvider extends NotesControllerProvider<VmRef, VmNoteDAO> { + private Map<VmRef, VmNotesController> controllers = new ConcurrentHashMap<>(); + public VmNotesControllerProvider(Clock clock, ApplicationService appSvc, VmNoteDAO vmNoteDao, NotesViewProvider viewProvider) { super(clock, appSvc, vmNoteDao, viewProvider); } @Override public VmNotesController getInformationServiceController(VmRef vm) { - return new VmNotesController(clock, appSvc, dao, vm, viewProvider); + if (controllers.get(vm) == null) { + controllers.put(vm, new VmNotesController(clock, appSvc, dao, vm, viewProvider)); + } + return controllers.get(vm); } }
--- a/vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/VmBytemanInformationService.java Fri Dec 16 09:06:40 2016 -0500 +++ b/vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/VmBytemanInformationService.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.vm.byteman.client.swing.internal; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Properties; import org.apache.felix.scr.annotations.Property; @@ -74,6 +77,8 @@ @Reference private RequestQueue requestQueue; + + private Map<VmRef, VmBytemanInformationController> controllers = new ConcurrentHashMap<>(); @Override public int getOrderValue() { @@ -89,9 +94,10 @@ @Override public InformationServiceController<VmRef> getInformationServiceController(VmRef ref) { - return new VmBytemanInformationController(ref, agentInfoDao, - vmInfoDao, vmBytemanDao, - requestQueue); + if (controllers.get(ref) == null) { + controllers.put(ref, new VmBytemanInformationController(ref, agentInfoDao, vmInfoDao, vmBytemanDao, requestQueue)); + } + return controllers.get(ref); } }
--- a/vm-classstat/client-core/src/main/java/com/redhat/thermostat/vm/classstat/client/core/internal/VmClassStatServiceImpl.java Fri Dec 16 09:06:40 2016 -0500 +++ b/vm-classstat/client-core/src/main/java/com/redhat/thermostat/vm/classstat/client/core/internal/VmClassStatServiceImpl.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.vm.classstat.client.core.internal; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import com.redhat.thermostat.common.Filter; import com.redhat.thermostat.client.core.NameMatchingRefFilter; import com.redhat.thermostat.client.core.controllers.InformationServiceController; @@ -53,6 +56,7 @@ private ApplicationService appSvc; private VmClassStatDAO vmClassStatDao; private VmClassStatViewProvider viewProvider; + private Map<VmRef, VmClassStatController> controllers = new ConcurrentHashMap<>(); public VmClassStatServiceImpl(ApplicationService appSvc, VmClassStatDAO vmClassStatDao, VmClassStatViewProvider viewProvider) { @@ -63,7 +67,10 @@ @Override public InformationServiceController<VmRef> getInformationServiceController(VmRef ref) { - return new VmClassStatController(appSvc, vmClassStatDao, ref, viewProvider); + if (controllers.get(ref) == null) { + controllers.put(ref, new VmClassStatController(appSvc, vmClassStatDao, ref, viewProvider)); + } + return controllers.get(ref); } @Override
--- a/vm-compiler/client-core/src/main/java/com/redhat/thermostat/vm/compiler/client/core/internal/VmCompilerStatServiceImpl.java Fri Dec 16 09:06:40 2016 -0500 +++ b/vm-compiler/client-core/src/main/java/com/redhat/thermostat/vm/compiler/client/core/internal/VmCompilerStatServiceImpl.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.vm.compiler.client.core.internal; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import com.redhat.thermostat.client.core.NameMatchingRefFilter; import com.redhat.thermostat.client.core.controllers.InformationServiceController; import com.redhat.thermostat.common.ApplicationService; @@ -53,6 +56,7 @@ private ApplicationService appSvc; private VmCompilerStatDao vmCompilerStatDao; private VmCompilerStatViewProvider viewProvider; + private Map<VmRef, VmCompilerStatController> controllers = new ConcurrentHashMap<>(); public VmCompilerStatServiceImpl(ApplicationService appSvc, VmCompilerStatDao vmCompilerStatDao, VmCompilerStatViewProvider viewProvider) { @@ -63,7 +67,10 @@ @Override public InformationServiceController<VmRef> getInformationServiceController(VmRef ref) { - return new VmCompilerStatController(appSvc, vmCompilerStatDao, ref, viewProvider); + if (controllers.get(ref) == null) { + controllers.put(ref, new VmCompilerStatController(appSvc, vmCompilerStatDao, ref, viewProvider)); + } + return controllers.get(ref); } @Override
--- a/vm-cpu/client-core/src/main/java/com/redhat/thermostat/vm/cpu/client/core/internal/VmCpuServiceImpl.java Fri Dec 16 09:06:40 2016 -0500 +++ b/vm-cpu/client-core/src/main/java/com/redhat/thermostat/vm/cpu/client/core/internal/VmCpuServiceImpl.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.vm.cpu.client.core.internal; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import com.redhat.thermostat.common.Filter; import com.redhat.thermostat.client.core.NameMatchingRefFilter; import com.redhat.thermostat.client.core.controllers.InformationServiceController; @@ -53,6 +56,7 @@ private ApplicationService appSvc; private VmCpuStatDAO vmCpuStatDAO; private VmCpuViewProvider viewProvider; + private Map<VmRef, VmCpuController> controllers = new ConcurrentHashMap<>(); public VmCpuServiceImpl(ApplicationService appSvc, VmCpuStatDAO vmCpuStatDAO, VmCpuViewProvider viewProvider) { @@ -64,7 +68,10 @@ @Override public InformationServiceController<VmRef> getInformationServiceController( VmRef ref) { - return new VmCpuController(appSvc, vmCpuStatDAO, ref, viewProvider); + if (controllers.get(ref) == null) { + controllers.put(ref, new VmCpuController(appSvc, vmCpuStatDAO, ref, viewProvider)); + } + return controllers.get(ref); } @Override
--- a/vm-gc/client-core/src/main/java/com/redhat/thermostat/vm/gc/client/core/internal/VmGcServiceImpl.java Fri Dec 16 09:06:40 2016 -0500 +++ b/vm-gc/client-core/src/main/java/com/redhat/thermostat/vm/gc/client/core/internal/VmGcServiceImpl.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.vm.gc.client.core.internal; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import com.redhat.thermostat.common.Filter; import com.redhat.thermostat.client.core.NameMatchingRefFilter; import com.redhat.thermostat.client.core.controllers.InformationServiceController; @@ -61,6 +64,7 @@ private AgentInfoDAO agentInfoDAO; private VmGcViewProvider viewProvider; private GCRequest gcRequest; + private Map<VmRef, VmGcController> controllers = new ConcurrentHashMap<>(); public VmGcServiceImpl(ApplicationService appSvc, VmMemoryStatDAO vmMemoryStatDAO, VmGcStatDAO vmGcStatDAO, VmInfoDAO vmInfoDAO, AgentInfoDAO agentInfoDAO, @@ -77,7 +81,10 @@ @Override public InformationServiceController<VmRef> getInformationServiceController( VmRef ref) { - return new VmGcController(appSvc, vmMemoryStatDAO, vmGcStatDAO, vmInfoDAO, agentInfoDAO, ref, viewProvider, gcRequest); + if (controllers.get(ref) == null) { + controllers.put(ref, new VmGcController(appSvc, vmMemoryStatDAO, vmGcStatDAO, vmInfoDAO, agentInfoDAO, ref, viewProvider, gcRequest)); + } + return controllers.get(ref); } @Override
--- a/vm-heap-analysis/client-core/src/main/java/com/redhat/thermostat/vm/heap/analysis/client/core/internal/HeapDumperServiceImpl.java Fri Dec 16 09:06:40 2016 -0500 +++ b/vm-heap-analysis/client-core/src/main/java/com/redhat/thermostat/vm/heap/analysis/client/core/internal/HeapDumperServiceImpl.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.vm.heap.analysis.client.core.internal; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import com.redhat.thermostat.client.core.NameMatchingRefFilter; import com.redhat.thermostat.client.core.controllers.InformationServiceController; import com.redhat.thermostat.client.core.progress.ProgressNotifier; @@ -74,6 +77,8 @@ private ProgressNotifier notifier; private HeapDumpListViewProvider heapDumpListViewProvider; + + private Map<VmRef, HeapDumpController> controllers = new ConcurrentHashMap<>(); public HeapDumperServiceImpl(ApplicationService appService, VmInfoDAO vmInfoDao, VmMemoryStatDAO vmMemoryStatDao, @@ -101,9 +106,10 @@ @Override public InformationServiceController<VmRef> getInformationServiceController(VmRef ref) { - return new HeapDumpController(vmMemoryStatDao, vmInfoDao, heapDao, ref, appService, - viewProvider, detailsViewProvider, histogramViewProvider, treeMapViewProvider, objectDetailsViewProvider, - objectRootsViewProvider, heapDumpListViewProvider, notifier); + if (controllers.get(ref) == null) { + controllers.put(ref, new HeapDumpController(vmMemoryStatDao, vmInfoDao, heapDao, ref, appService, viewProvider, detailsViewProvider, histogramViewProvider, treeMapViewProvider, objectDetailsViewProvider, objectRootsViewProvider, heapDumpListViewProvider, notifier)); + } + return controllers.get(ref); } @Override
--- a/vm-io/client-core/src/main/java/com/redhat/thermostat/vm/io/client/core/internal/VmIoServiceImpl.java Fri Dec 16 09:06:40 2016 -0500 +++ b/vm-io/client-core/src/main/java/com/redhat/thermostat/vm/io/client/core/internal/VmIoServiceImpl.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.vm.io.client.core.internal; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import com.redhat.thermostat.client.core.NameMatchingRefFilter; import com.redhat.thermostat.client.core.controllers.InformationServiceController; import com.redhat.thermostat.common.ApplicationService; @@ -53,6 +56,7 @@ private ApplicationService appSvc; private VmIoStatDAO vmIoStatDAO; private VmIoViewProvider viewProvider; + private Map<VmRef, VmIoController> controllers = new ConcurrentHashMap<>(); public VmIoServiceImpl(ApplicationService appSvc, VmIoStatDAO vmCpuStatDAO, VmIoViewProvider viewProvider) { this.appSvc = appSvc; @@ -62,7 +66,10 @@ @Override public InformationServiceController<VmRef> getInformationServiceController(VmRef ref) { - return new VmIoController(appSvc, vmIoStatDAO, ref, viewProvider); + if (controllers.get(ref) == null) { + controllers.put(ref, new VmIoController(appSvc, vmIoStatDAO, ref, viewProvider)); + } + return controllers.get(ref); } @Override
--- a/vm-jmx/client-core/src/main/java/com/redhat/thermostat/vm/jmx/client/core/internal/JmxNotificationsViewServiceImpl.java Fri Dec 16 09:06:40 2016 -0500 +++ b/vm-jmx/client-core/src/main/java/com/redhat/thermostat/vm/jmx/client/core/internal/JmxNotificationsViewServiceImpl.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.vm.jmx.client.core.internal; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import com.redhat.thermostat.client.command.RequestQueue; import com.redhat.thermostat.common.Filter; import com.redhat.thermostat.client.core.NameMatchingRefFilter; @@ -62,6 +65,8 @@ private final RequestQueue requestQueue; private final TimerFactory timerFactory; + private Map<VmRef, JmxNotificationsViewController> controllers = new ConcurrentHashMap<>(); + public JmxNotificationsViewServiceImpl(ApplicationService appSvc, AgentInfoDAO agentDao, VmInfoDAO vmInfoDao, JmxNotificationDAO notificationDao, RequestQueue requestQueue, TimerFactory timerFactory, @@ -82,8 +87,10 @@ @Override public InformationServiceController<VmRef> getInformationServiceController(VmRef ref) { - return new JmxNotificationsViewController(appSvc, agentDao, vmInfoDao, notificationDao, timerFactory, - requestQueue, viewProvider, ref); + if (controllers.get(ref) == null) { + controllers.put(ref, new JmxNotificationsViewController(appSvc, agentDao, vmInfoDao, notificationDao, timerFactory, requestQueue, viewProvider, ref)); + } + return controllers.get(ref); } @Override
--- a/vm-memory/client-core/src/main/java/com/redhat/thermostat/vm/memory/client/core/internal/MemoryStatsServiceImpl.java Fri Dec 16 09:06:40 2016 -0500 +++ b/vm-memory/client-core/src/main/java/com/redhat/thermostat/vm/memory/client/core/internal/MemoryStatsServiceImpl.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.vm.memory.client.core.internal; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import com.redhat.thermostat.client.core.NameMatchingRefFilter; import com.redhat.thermostat.client.core.controllers.InformationServiceController; import com.redhat.thermostat.common.ApplicationService; @@ -61,6 +64,7 @@ private AgentInfoDAO agentDAO; private GCRequest gcRequest; private MemoryStatsViewProvider viewProvider; + private Map<VmRef, MemoryStatsController> controllers = new ConcurrentHashMap<>(); public MemoryStatsServiceImpl(ApplicationService appSvc, VmInfoDAO vmInfoDao, VmMemoryStatDAO vmMemoryStatDao, VmTlabStatDAO vmTlabStatDao, AgentInfoDAO agentDAO, @@ -76,7 +80,10 @@ @Override public InformationServiceController<VmRef> getInformationServiceController(VmRef ref) { - return new MemoryStatsController(appSvc, vmInfoDao, vmMemoryStatDao, vmTlabStatDao, ref, viewProvider, agentDAO, gcRequest); + if (controllers.get(ref) == null) { + controllers.put(ref, new MemoryStatsController(appSvc, vmInfoDao, vmMemoryStatDao, vmTlabStatDao, ref, viewProvider, agentDAO, gcRequest)); + } + return controllers.get(ref); } @Override
--- a/vm-numa/client-core/src/main/java/com/redhat/thermostat/vm/numa/client/core/VmNumaServiceImpl.java Fri Dec 16 09:06:40 2016 -0500 +++ b/vm-numa/client-core/src/main/java/com/redhat/thermostat/vm/numa/client/core/VmNumaServiceImpl.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.vm.numa.client.core; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import com.redhat.thermostat.client.core.NameMatchingRefFilter; import com.redhat.thermostat.client.core.controllers.InformationServiceController; import com.redhat.thermostat.common.ApplicationService; @@ -56,6 +59,7 @@ private VmNumaDAO vmNumaDAO; private VmNumaViewProvider vmNumaViewProvider; private NumaDAO numaDAO; + private Map<VmRef, VmNumaController> controllers = new ConcurrentHashMap<>(); public VmNumaServiceImpl(ApplicationService applicationService, NumaDAO numaDAO, VmNumaDAO vmNumaDAO, VmNumaViewProvider vmNumaViewProvider) { this.appSvc = applicationService; @@ -73,7 +77,10 @@ public InformationServiceController<VmRef> getInformationServiceController(VmRef ref) { VmId vmId = new VmId(ref.getVmId()); AgentId agentId = new AgentId(ref.getHostRef().getAgentId()); - return new VmNumaController(appSvc, numaDAO, vmNumaDAO, vmId, agentId, vmNumaViewProvider); + if (controllers.get(ref) == null) { + controllers.put(ref, new VmNumaController(appSvc, numaDAO, vmNumaDAO, vmId, agentId, vmNumaViewProvider)); + } + return controllers.get(ref); } @Override
--- a/vm-overview/client-core/src/main/java/com/redhat/thermostat/vm/overview/client/core/internal/VmOverviewServiceImpl.java Fri Dec 16 09:06:40 2016 -0500 +++ b/vm-overview/client-core/src/main/java/com/redhat/thermostat/vm/overview/client/core/internal/VmOverviewServiceImpl.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.vm.overview.client.core.internal; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import com.redhat.thermostat.common.Filter; import com.redhat.thermostat.client.core.NameMatchingRefFilter; import com.redhat.thermostat.client.core.controllers.InformationServiceController; @@ -53,6 +56,7 @@ private ApplicationService appSvc; private VmInfoDAO vmInfoDAO; private VmOverviewViewProvider viewProvider; + private Map<VmRef, VmOverviewController> controllers = new ConcurrentHashMap<>(); public VmOverviewServiceImpl(ApplicationService appSvc, VmInfoDAO vmInfoDAO, VmOverviewViewProvider viewProvider) { this.appSvc = appSvc; @@ -63,7 +67,10 @@ @Override public InformationServiceController<VmRef> getInformationServiceController( VmRef ref) { - return new VmOverviewController(vmInfoDAO, ref, viewProvider); + if (controllers.get(ref) == null) { + controllers.put(ref, new VmOverviewController(vmInfoDAO, ref, viewProvider)); + } + return controllers.get(ref); } @Override
--- a/vm-profiler/client-swing/src/main/java/com/redhat/thermostat/vm/profiler/client/swing/internal/VmProfileService.java Fri Dec 16 09:06:40 2016 -0500 +++ b/vm-profiler/client-swing/src/main/java/com/redhat/thermostat/vm/profiler/client/swing/internal/VmProfileService.java Fri Dec 16 16:57:19 2016 -0500 @@ -36,6 +36,9 @@ package com.redhat.thermostat.vm.profiler.client.swing.internal; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + import com.redhat.thermostat.client.command.RequestQueue; import com.redhat.thermostat.client.core.InformationService; import com.redhat.thermostat.client.core.controllers.InformationServiceController; @@ -59,6 +62,7 @@ private RequestQueue queue; private VmProfileTreeMapViewProvider treeMapViewProvider; private UIDefaults uiDefaults; + private Map<VmRef, VmProfileController> controllers = new ConcurrentHashMap<>(); public VmProfileService(ApplicationService service, ProgressNotifier notifier, AgentInfoDAO agentInfoDao, VmInfoDAO vmInfoDao, ProfileDAO dao, @@ -88,8 +92,10 @@ @Override public InformationServiceController<VmRef> getInformationServiceController(VmRef ref) { - return new VmProfileController(service, notifier, agentInfoDao, vmInfoDao, dao, queue, - treeMapViewProvider, ref, uiDefaults); + if (controllers.get(ref) == null) { + controllers.put(ref, new VmProfileController(service, notifier, agentInfoDao, vmInfoDao, dao, queue, treeMapViewProvider, ref, uiDefaults)); + } + return controllers.get(ref); } }