Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-40211

Confluence Analytics events fail with a NullPointerException

    XMLWordPrintable

Details

    Description

      Summary

      When Confluence attempts to send certain analytics, it can fail with a NullPointerException.

      Steps to Reproduce

      It's not entirely clear how this is reproduced reliably.

      Expected Results

      The exception is not thrown and the analytics are sent without error.

      Actual Results

      The below exception is thrown:

      2015-12-10 10:26:42,429 ERROR [analyticsEventProcessor:thread-1] [analytics.client.listener.ProductEventListener] run Failed to send analytics event com.atlassian.analytics.api.events.MauEvent@8434fcf8 
      com.atlassian.cache.CacheException: com.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.NullPointerException 
      at com.atlassian.cache.ehcache.DelegatingCache.get(DelegatingCache.java:101) 
      at com.atlassian.confluence.cache.ehcache.DefaultConfluenceEhCache.get(DefaultConfluenceEhCache.java:46) 
      at com.atlassian.confluence.cache.ConfluenceMonitoringCache.get(ConfluenceMonitoringCache.java:49) 
      at com.atlassian.analytics.client.serialize.EventSerializer.hashEmailPropertyForMauEvent(EventSerializer.java:149) 
      at com.atlassian.analytics.client.serialize.EventSerializer.access$900(EventSerializer.java:34) 
      at com.atlassian.analytics.client.serialize.EventSerializer$2.get(EventSerializer.java:138) 
      at com.atlassian.analytics.client.serialize.EventSerializer$2.get(EventSerializer.java:75) 
      at com.atlassian.analytics.client.listener.ProductEventListener$1.run(ProductEventListener.java:117) 
      at com.atlassian.sal.core.executor.ThreadLocalDelegateRunnable.run(ThreadLocalDelegateRunnable.java:34) 
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
      at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
      at java.lang.Thread.run(Thread.java:745) 
      Caused by: com.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.NullPointerException 
      at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:149) 
      at com.atlassian.util.concurrent.LazyReference.get(LazyReference.java:112) 
      at com.atlassian.util.concurrent.ResettableLazyReference.get(ResettableLazyReference.java:87) 
      at com.atlassian.analytics.client.hash.BcryptAnalyticsEmailHasher.hashInternal(BcryptAnalyticsEmailHasher.java:45) 
      at com.atlassian.analytics.client.hash.BcryptAnalyticsEmailHasher.hash(BcryptAnalyticsEmailHasher.java:40) 
      at com.atlassian.analytics.client.serialize.EventSerializer$1.load(EventSerializer.java:65) 
      at com.atlassian.analytics.client.serialize.EventSerializer$1.load(EventSerializer.java:62) 
      at com.atlassian.cache.ehcache.LoadingCache.getFromLoader(LoadingCache.java:145) 
      at com.atlassian.cache.ehcache.LoadingCache.loadValueAndReleaseLock(LoadingCache.java:100) 
      at com.atlassian.cache.ehcache.LoadingCache.get(LoadingCache.java:76) 
      at com.atlassian.cache.ehcache.DelegatingCache.get(DelegatingCache.java:96) 
      ... 13 more 
      Caused by: java.lang.NullPointerException 
      at java.io.Reader.<init>(Reader.java:78) 
      at java.io.InputStreamReader.<init>(InputStreamReader.java:113) 
      at org.apache.commons.io.IOUtils.copy(IOUtils.java:1906) 
      at org.apache.commons.io.IOUtils.toString(IOUtils.java:778) 
      at org.apache.commons.io.IOUtils.toString(IOUtils.java:759) 
      at com.atlassian.analytics.client.hash.reader.RemoteHashingInstructionsReader.readInstructions(RemoteHashingInstructionsReader.java:27) 
      at com.atlassian.analytics.client.hash.BcryptAnalyticsEmailHasher$HashingInstructionsResettableLazyReference.create(BcryptAnalyticsEmailHasher.java:154)
      at com.atlassian.analytics.client.hash.BcryptAnalyticsEmailHasher$HashingInstructionsResettableLazyReference.create(BcryptAnalyticsEmailHasher.java:144)
      at com.atlassian.util.concurrent.ResettableLazyReference$InternalReference.create(ResettableLazyReference.java:140) 
      at com.atlassian.util.concurrent.LazyReference$Sync.run(LazyReference.java:321) 
      at com.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:143) 
      ... 23 more

      Workaround

      Disabling the Analytics and the below add-ons will prevent this exception from being thrown. Please note it's a spurious exception that prevents analytics being thrown however will not affect how Confluence operates outside of sending analytics.

      • Confluence Analytics Whitelist Plugin
      • Analytics Client Plugin and
      • Analytics Whitelist Plugin

      Attachments

        Issue Links

          Activity

            People

              ltran ltran
              mkhairuliana Monique Khairuliana (Inactive)
              Votes:
              28 Vote for this issue
              Watchers:
              50 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: