Deployments in Hawtio taking more time for clustered environment

Solution Verified - Updated -

Issue

  • Using Red Hat JBoss Fuse 6.1.0 in clustered 3 node environment. Bundles are deployed through front-end HAWTIO console with Firefox browser. For single deployments its taking more than 40 mins which includes creation of profile, adding configuration files , adding features repository and installing the feature. Same slowness is experienced while upgrading existing bundles also. Below is thread-dump taken at the time of slowness.
pool-367-thread-1" prio=6 tid=0x000000000c2d9800 nid=0x3198 runnable [0x0000000014f2d000]
   java.lang.Thread.State: RUNNABLE
    at org.eclipse.jgit.internal.storage.file.PackFile.idx(PackFile.java:164)
    - locked <0x00000000c3747670> (a org.eclipse.jgit.internal.storage.file.PackFile)
    at org.eclipse.jgit.internal.storage.file.PackFile.get(PackFile.java:255)
    at org.eclipse.jgit.internal.storage.file.ObjectDirectory.openObject1(ObjectDirectory.java:371)
    at org.eclipse.jgit.internal.storage.file.FileObjectDatabase.openObjectImpl1(FileObjectDatabase.java:173)
    at org.eclipse.jgit.internal.storage.file.FileObjectDatabase.openObject(FileObjectDatabase.java:158)
    at org.eclipse.jgit.internal.storage.file.WindowCursor.open(WindowCursor.java:145)
    at org.eclipse.jgit.revwalk.RevWalk.getCachedBytes(RevWalk.java:853)
    at org.eclipse.jgit.revwalk.RevCommit.parseHeaders(RevCommit.java:143)
    at org.eclipse.jgit.revwalk.RewriteTreeFilter.include(RewriteTreeFilter.java:109)
    at org.eclipse.jgit.revwalk.PendingGenerator.next(PendingGenerator.java:141)
    at org.eclipse.jgit.revwalk.BlockRevQueue.<init>(BlockRevQueue.java:65)
    at org.eclipse.jgit.revwalk.FIFORevQueue.<init>(FIFORevQueue.java:64)
    at org.eclipse.jgit.revwalk.StartGenerator.next(StartGenerator.java:157)
    at org.eclipse.jgit.revwalk.RevWalk.next(RevWalk.java:414)
    at org.gitective.core.CommitUtils.getLastCommit(CommitUtils.java:418)
    at io.fabric8.git.internal.CachingGitDataStore.addProfileData(CachingGitDataStore.java:162)
    at io.fabric8.git.internal.CachingGitDataStore.addProfileData(CachingGitDataStore.java:152)
    at io.fabric8.git.internal.CachingGitDataStore.addProfileData(CachingGitDataStore.java:152)
    at io.fabric8.git.internal.CachingGitDataStore.pouplateVersionData(CachingGitDataStore.java:132)
    at io.fabric8.git.internal.CachingGitDataStore$1$1.call(CachingGitDataStore.java:91)
    at io.fabric8.git.internal.CachingGitDataStore$1$1.call(CachingGitDataStore.java:88)
    at io.fabric8.git.internal.GitDataStore.gitOperation(GitDataStore.java:934)
    - locked <0x00000000c3469200> (a java.lang.Object)
    at io.fabric8.git.internal.GitDataStore.gitOperation(GitDataStore.java:901)
    at io.fabric8.git.internal.GitDataStore.gitOperation(GitDataStore.java:896)
    at io.fabric8.git.internal.CachingGitDataStore$1.load(CachingGitDataStore.java:88)
    at io.fabric8.git.internal.CachingGitDataStore$1.load(CachingGitDataStore.java:85)
    at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3522)
    at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315)
    at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278)
    - locked <0x00000000c346f9e0> (a com.google.common.cache.LocalCache$StrongEntry)
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3932)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3936)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4806)
    at io.fabric8.git.internal.CachingGitDataStore.getVersionData(CachingGitDataStore.java:116)
    at io.fabric8.git.internal.CachingGitDataStore.hasProfile(CachingGitDataStore.java:187)
    at io.fabric8.internal.VersionImpl.getProfile(VersionImpl.java:100)
    at io.fabric8.internal.ContainerImpl$ContainerProfile.getParents(ContainerImpl.java:271)
    at io.fabric8.internal.ProfileOverlayImpl.fillParentProfiles(ProfileOverlayImpl.java:248)
    at io.fabric8.internal.ProfileOverlayImpl.getInheritedProfiles(ProfileOverlayImpl.java:243)
    at io.fabric8.internal.ProfileOverlayImpl.getConfigurations(ProfileOverlayImpl.java:346)
    at io.fabric8.internal.ProfileOverlayImpl.getContainerConfiguration(ProfileOverlayImpl.java:121)
    at io.fabric8.internal.ProfileImpl.getContainerConfigList(ProfileImpl.java:149)
    at io.fabric8.internal.ProfileOverlayImpl.getRepositories(ProfileOverlayImpl.java:106)
    at io.fabric8.features.FabricFeaturesServiceImpl.listInstalledRepositories(FabricFeaturesServiceImpl.java:327)
    at io.fabric8.features.FabricFeaturesServiceImpl.run(FabricFeaturesServiceImpl.java:93)
    - locked <0x00000000c3202c18> (a io.fabric8.features.FabricFeaturesServiceImpl)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - <0x00000000c3202e80> (a java.util.concurrent.ThreadPoolExecutor$Worker)


"pool-365-thread-1" prio=6 tid=0x000000000c2ed000 nid=0x2960 waiting for monitor entry [0x00000000123cf000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at io.fabric8.git.internal.GitDataStore.gitOperation(GitDataStore.java:906)
    - waiting to lock <0x00000000c3469200> (a java.lang.Object)
    at io.fabric8.git.internal.GitDataStore.gitOperation(GitDataStore.java:901)
    at io.fabric8.git.internal.GitDataStore.gitOperation(GitDataStore.java:891)
    at io.fabric8.git.internal.GitDataStore.pull(GitDataStore.java:1251)
    at io.fabric8.git.internal.GitDataStore$1.run(GitDataStore.java:186)
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
    at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

   Locked ownable synchronizers:
    - <0x00000000c3468a90> (a java.util.concurrent.ThreadPoolExecutor$Worker)

Environment

  • Red Hat JBoss Fuse
    • 6.1.0

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In
Close

Welcome! Check out the Getting Started with Red Hat page for quick tours and guides for common tasks.