Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-24979

The gadget directory code will wait forever on the gadget provider and this can hang the ability to add gadgets

    XMLWordPrintable

Details

    Description

      NOTE: This bug report is for JIRA Server. Using JIRA Cloud? See the corresponding bug report.

      Customers are experiencing time outs on the Add Gadget function.

      A thread dump of sandbox.onjira.com reveals only 1 thread in action and its waiting for a HTTP reply. I suspect that this is usinfg default TCP timeout and hence never returning in time.

      @400000004e1277a517421424 "TP-Processor27" daemon prio=10 tid=0x00002aab20fb2000 nid=0x6cc0 runnable [0x0000000046e8d000]
      @400000004e1277a51742374c    java.lang.Thread.State: RUNNABLE
      @400000004e1277a5174279b4 	at java.net.PlainSocketImpl.socketConnect(Native Method)
      @400000004e1277a517427d9c 	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
      @400000004e1277a51742856c 	- locked <0x00002aab085de658> (a java.net.SocksSocketImpl)
      @400000004e1277a51742a4ac 	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
      @400000004e1277a51743d174 	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
      @400000004e1277a51743f884 	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
      @400000004e1277a5174417c4 	at java.net.Socket.connect(Socket.java:525)
      @400000004e1277a517443704 	at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:123)
      @400000004e1277a51744a07c 	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:123)
      @400000004e1277a51744c78c 	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:147)
      @400000004e1277a5174540a4 	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:101)
      @400000004e1277a5174592ac 	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:381)
      @400000004e1277a517459a7c 	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
      @400000004e1277a51745a24c 	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
      @400000004e1277a51745c18c 	at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
      @400000004e1277a51745e0cc 	at org.codehaus.httpcache4j.resolver.HTTPClientResponseResolver.resolve(HTTPClientResponseResolver.java:52)
      @400000004e1277a517467154 	at org.codehaus.httpcache4j.cache.HTTPCache.handleResolve(HTTPCache.java:192)
      @400000004e1277a517469864 	at org.codehaus.httpcache4j.cache.HTTPCache.unconditionalResolve(HTTPCache.java:184)
      @400000004e1277a51746a034 	at org.codehaus.httpcache4j.cache.HTTPCache.getFromCache(HTTPCache.java:156)
      @400000004e1277a51746bf74 	at org.codehaus.httpcache4j.cache.HTTPCache.doCachedRequest(HTTPCache.java:118)
      @400000004e1277a51746deb4 	at org.codehaus.httpcache4j.cache.HTTPCache.doCachedRequest(HTTPCache.java:98)
      @400000004e1277a51746fdf4 	at com.atlassian.gadgets.directory.internal.GadgetFeedsSpecProvider$FeedSpecProvider$LazyFeedReference.create(GadgetFeedsSpecProvider.java:352)
      @400000004e1277a517471d34 	at com.atlassian.gadgets.directory.internal.GadgetFeedsSpecProvider$FeedSpecProvider$LazyFeedReference.create(GadgetFeedsSpecProvider.java:335)
      @400000004e1277a517473c74 	at com.atlassian.util.concurrent.LazyReference$Sync.run(LazyReference.java:326)
      @400000004e1277a517475f9c 	at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:146)
      @400000004e1277a517477edc 	at com.atlassian.util.concurrent.LazyReference.get(LazyReference.java:115)
      @400000004e1277a51747bd5c 	at com.atlassian.gadgets.directory.internal.GadgetFeedsSpecProvider$FeedSpecProvider.getFeed(GadgetFeedsSpecProvider.java:313)
      @400000004e1277a51747e46c 	at com.atlassian.gadgets.directory.internal.GadgetFeedsSpecProvider$FeedSpecProvider.getEntries(GadgetFeedsSpecProvider.java:306)
      @400000004e1277a51747ec3c 	at com.atlassian.gadgets.directory.internal.GadgetFeedsSpecProvider$FeedSpecProvider.getGadgetUris(GadgetFeedsSpecProvider.java:281)
      @400000004e1277a51747f40c 	at com.atlassian.gadgets.directory.internal.GadgetFeedsSpecProvider$FeedSpecProvider.entries(GadgetFeedsSpecProvider.java:275)
      @400000004e1277a517481b1c 	at com.atlassian.gadgets.directory.internal.GadgetSpecProviderHelper$GadgetSpecProviderToEntriesFunction.apply(GadgetSpecProviderHelper.java:83)
      @400000004e1277a5174822ec 	at com.atlassian.gadgets.directory.internal.GadgetSpecProviderHelper$GadgetSpecProviderToEntriesFunction.apply(GadgetSpecProviderHelper.java:75)
      @400000004e1277a51748ea24 	at com.google.common.collect.Iterators$8.next(Iterators.java:697)
      @400000004e1277a51748f1f4 	at com.google.common.collect.Iterators$8.next(Iterators.java:696)
      @400000004e1277a51749345c 	at com.google.common.collect.Iterators$5.hasNext(Iterators.java:505)
      @400000004e1277a517493c2c 	at com.google.common.collect.Iterators$5.hasNext(Iterators.java:504)
      @400000004e1277a517494014 	at com.google.common.collect.Lists.newArrayList(Lists.java:131)
      @400000004e1277a51749633c 	at com.google.common.collect.Lists.newArrayList(Lists.java:113)
      @400000004e1277a51749827c 	at com.google.common.collect.ImmutableList.copyOf(ImmutableList.java:229)
      @400000004e1277a51749a1bc 	at com.atlassian.gadgets.directory.internal.impl.AbstractDirectoryEntryProvider.entries(AbstractDirectoryEntryProvider.java:45)
      @400000004e1277a51749c0fc 	at com.atlassian.gadgets.directory.internal.impl.DirectoryImpl$1.apply(DirectoryImpl.java:50)
      @400000004e1277a51749e03c 	at com.atlassian.gadgets.directory.internal.impl.DirectoryImpl$1.apply(DirectoryImpl.java:45)
      

      We need to change the code to have a decent timeout, after which we wont keep asking.

      Support have at elast 3 cases with this problem.

      ALSO we have a chicken and egg problem of managing gadget subscriptions

      In order to find out what gadget subscriptions you have, you need to call Add Gadget but this is blocked. But to find out what is blocking you need to view the gadget subscriptions.

      We need a UI in JIRA admin to see current gadget subscriptions independent of making calls to providers of gadget subscriptions.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              bbaker ɹǝʞɐq pɐɹq
              Votes:
              8 Vote for this issue
              Watchers:
              11 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: