Pages with "Spaces List" macro cannot be loaded on mobile browsers

XMLWordPrintable

    • 1
    • Severity 3 - Minor

      Issue Summary

      On Confluence 9.1.0 and onwards, pages which contain "Spaces List" macro cannot be loaded on mobile browsers with "Oops! Something went wrong. It's probably us, but it might be you. Check your network connection." error.
      Additionally, "Space Attachments", "Create Space Button", "Team Calendar", "Contributors" macros also have the same issue.

      The symptom didn't occur on Confluence 8.5 nor 9.0.1.

      It is also reproducible on PC/Mac browsers by changing "User agent" to some mobile browsers. For example, run Chrome > open DevTools > navigate to "Network" tab > open "Network conditions" > uncheck "Use browser default" and select "Chrome - iPhone" (see this for details).

      Steps to Reproduce

      1. Create a page which contains only "Space List" macro
      2. Access the page with a browser on a smartphone, or a desktop browser with mobile device's "User agent"

      Expected Results

      "View desktop version" icon is displayed.

      Actual Results

      "Oops! Something went wrong. It's probably us, but it might be you. Check your network connection." error is displayed after some waiting time.

      The following stuck thread is also observed.

      15-Jul-2025 02:56:34.758 WARNING [Catalina-utility-2] org.apache.catalina.valves.StuckThreadDetectionValve.notifyStuckThreadDetected Thread [http-nio-8090-exec-75 url: /confluence/rest/mobile/1.0/content/1081346; user: admin] (id=[1686]) has been active for [61,247] milliseconds (since [7/15/25, 2:55 AM]) to serve the same request for [https://linux-105809.prod.atl-cd.net/confluence/rest/mobile/1.0/content/1081346?knownContexts=&knownResources=] and may be stuck (configured threshold for this StuckThreadDetectionValve is [60] seconds). There is/are [1] thread(s) in total that are monitored by this Valve and may be stuck.
              java.lang.Throwable
                      at java.base@17.0.15/java.lang.Object.wait(Native Method)
                      at org.eclipse.gemini.blueprint.service.importer.support.internal.support.RetryTemplate.execute(RetryTemplate.java:104)
                      at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceDynamicInterceptor.lookupService(ServiceDynamicInterceptor.java:427)
                      at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceDynamicInterceptor.getTarget(ServiceDynamicInterceptor.java:400)
                      at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60)
                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)
                      at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:137)
                      at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)
                      at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70)
                      at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53)
                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)
                      at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57)
                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)
                      at org.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:137)
                      at org.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:124)
                      at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
                      at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:762)
                      at org.springframework.aop.framework.CglibAopProxy$FixedChainStaticTargetInterceptor.intercept(CglibAopProxy.java:658)
                      at com.atlassian.confluence.macro.xhtml.XhtmlMacroManager$$EnhancerBySpringCGLIB$$f1030ff6.getMacroByName(<generated>)
                      at com.atlassian.confluence.plugins.mobile.render.UnknownMobileMacroMarshaller.marshal(UnknownMobileMacroMarshaller.java:44)
                      at com.atlassian.confluence.plugins.mobile.render.UnknownMobileMacroMarshaller.marshal(UnknownMobileMacroMarshaller.java:25)
                      at com.atlassian.confluence.content.render.xhtml.view.macro.ViewMacroMarshaller.marshalInternal(ViewMacroMarshaller.java:131)
                      at com.atlassian.confluence.content.render.xhtml.view.macro.ViewMacroMarshaller.lambda$marshal$0(ViewMacroMarshaller.java:116)
                      at com.atlassian.confluence.content.render.xhtml.view.macro.ViewMacroMarshaller$$Lambda$8040/0x0000731ffb8a62f8.marshal(Unknown Source)
                      at com.atlassian.confluence.impl.content.render.xhtml.analytics.MetricsCollectingMarshaller.marshal(MetricsCollectingMarshaller.java:49)
                      at com.atlassian.confluence.content.render.xhtml.view.macro.ViewMacroMarshaller.marshal(ViewMacroMarshaller.java:120)
                      at com.atlassian.confluence.content.render.xhtml.view.macro.ViewMacroMarshaller.marshal(ViewMacroMarshaller.java:52)
                      at com.atlassian.confluence.content.render.xhtml.UnmarshalMarshalFragmentTransformer.transform(UnmarshalMarshalFragmentTransformer.java:29)
                      at com.atlassian.confluence.content.render.xhtml.transformers.DefaultFragmentTransformer.transformFragment(DefaultFragmentTransformer.java:141)
                      at com.atlassian.confluence.content.render.xhtml.transformers.DefaultFragmentTransformer.transform(DefaultFragmentTransformer.java:123)
                      at com.atlassian.confluence.content.render.xhtml.storage.StorageXhtmlTransformer.transform(StorageXhtmlTransformer.java:41)
                      at com.atlassian.confluence.content.render.xhtml.TransformerChain.transform(TransformerChain.java:38)
                      at com.atlassian.confluence.content.render.xhtml.DefaultRenderer.renderWithoutMetrics(DefaultRenderer.java:190)
                      ...
      

      Workaround

      Use "Switch to desktop version" option in the menu.

            Assignee:
            Saba Taseer
            Reporter:
            Yukinobu Moriya
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: