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

Database schema check warnings for Synchrony tables during Confluence startup

    XMLWordPrintable

Details

    Description

      Summary

      Misleading "Schema check for table" warnings are thrown during startup

      Environment

      • Postgres SQL DB
      • Confluence 6.*

      Observed in atlassian-confluence.log at startup

      2018-04-12 21:27:38,373 WARN [AtlassianEvent::CustomizableThreadFactory-2] [persistence.schema.hibernate.HibernateSchemaComparator] lambda$compareTables$0 Schema check for table [EVENTS] encountered an error. Turn debug logging on for stacktrace.
      2018-04-12 21:27:38,375 WARN [AtlassianEvent::CustomizableThreadFactory-2] [persistence.schema.hibernate.HibernateSchemaComparator] lambda$compareTables$0 Schema check for table [SECRETS] encountered an error. Turn debug logging on for stacktrace.
      2018-04-12 21:27:38,377 WARN [AtlassianEvent::CustomizableThreadFactory-2] [persistence.schema.hibernate.HibernateSchemaComparator] lambda$compareTables$0 Schema check for table [SNAPSHOTS] encountered an error. Turn debug logging on for stacktrace.
      

      Enabling debug logging will expose a java.lang.NullPointerException error

      2018-04-13 20:25:20,733 DEBUG [AtlassianEvent::CustomizableThreadFactory-2] [persistence.schema.hibernate.HibernateSchemaComparator] lambda$compareTables$0 
      java.lang.NullPointerException
      	at com.atlassian.confluence.core.persistence.schema.hibernate.HibernateSchemaComparator.compareColumns(HibernateSchemaComparator.java:115)
      	at com.atlassian.confluence.core.persistence.schema.hibernate.HibernateSchemaComparator.compareTable(HibernateSchemaComparator.java:103)
      	at com.atlassian.confluence.core.persistence.schema.hibernate.HibernateSchemaComparator.lambda$compareTables$0(HibernateSchemaComparator.java:84)
      	at com.google.common.collect.Iterators$8.transform(Iterators.java:799)
      	at com.google.common.collect.TransformedIterator.next(TransformedIterator.java:48)
      	at com.google.common.collect.Iterators$7.computeNext(Iterators.java:651)
      	at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
      	at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
      	at com.google.common.collect.Iterators.addAll(Iterators.java:361)
      	at com.google.common.collect.Lists.newArrayList(Lists.java:160)
      	at com.google.common.collect.Lists.newArrayList(Lists.java:144)
      	at com.atlassian.confluence.core.persistence.schema.hibernate.HibernateSchemaComparator.compareTables(HibernateSchemaComparator.java:82)
      	at com.atlassian.confluence.core.persistence.schema.hibernate.HibernateSchemaComparator.compareSchema(HibernateSchemaComparator.java:68)
      	at com.atlassian.confluence.core.persistence.schema.hibernate.HibernateSchemaComparisonService.compareExpectedWithActualSchema(HibernateSchemaComparisonService.java:53)
      	at com.atlassian.confluence.core.persistence.schema.StartupSchemaChecker.checkSchema(StartupSchemaChecker.java:63)
      	at com.atlassian.confluence.core.persistence.schema.StartupSchemaChecker.checkSchemaIfBuildNumbersMatch(StartupSchemaChecker.java:52)
      	at com.atlassian.tenancy.api.helper.PerTenantInitialiser.onTenantArrived(PerTenantInitialiser.java:49)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:40)
      	at com.atlassian.confluence.event.ConfluenceListenerHandlersConfiguration$TimingListenerHandler$1$1.invoke(ConfluenceListenerHandlersConfiguration.java:69)
      	at com.atlassian.confluence.event.ConfluenceEventDispatcher$VCacheRequestContextRunnableFactory$1.lambda$run$0(ConfluenceEventDispatcher.java:93)
      	at com.atlassian.confluence.vcache.VCacheRequestContextOperations.lambda$doInRequestContext$0(VCacheRequestContextOperations.java:50)
      	at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContextInternal(VCacheRequestContextManager.java:87)
      	at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContext(VCacheRequestContextManager.java:71)
      	at com.atlassian.confluence.vcache.VCacheRequestContextOperations.doInRequestContext(VCacheRequestContextOperations.java:49)
      	at com.atlassian.confluence.event.ConfluenceEventDispatcher$VCacheRequestContextRunnableFactory$1.run(ConfluenceEventDispatcher.java:93)
      	at com.atlassian.confluence.event.ConfluenceEventDispatcher$1.run(ConfluenceEventDispatcher.java:61)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      

      Further errors can be seen

      "Column [buildnumber] of table [confversion] has mismatched definitions for expected [Column confversion.buildnumber int4 non-nullable] and actual [Column confversion.buildnumber int4(10) nullable]"
      "Column [labelid] of table [content_label] has mismatched definitions for expected [Column content_label.labelid int8 non-nullable] and actual [Column content_label.labelid int8(19) nullable]"
      "Column [cp_type] of table [content_perm] has mismatched definitions for expected [Column content_perm.cp_type varchar(10) non-nullable] and actual [Column content_perm.cp_type varchar(10) nullable]"
      "Column [follower] of table [follow_connections] has mismatched definitions for expected [Column follow_connections.follower varchar(255) nullable] and actual [Column follow_connections.follower varchar(255) non-nullable]"
      "Column [followee] of table [follow_connections] has mismatched definitions for expected [Column follow_connections.followee varchar(255) nullable] and actual [Column follow_connections.followee varchar(255) non-nullable]"
      "Column [username] of table [logininfo] has mismatched definitions for expected [Column logininfo.username varchar(255) non-nullable] and actual [Column logininfo.username varchar(255) nullable]"
      "Column [public_key_id] of table [trustedapp] has mismatched definitions for expected [Column trustedapp.public_key_id int8 non-nullable] and actual [Column trustedapp.public_key_id int8(19) nullable]"
      

      Workaround

      Performing DB encoding check will return no issues, warnings are cosmetic

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jgiacoppo Jade Giacoppo (Inactive)
              Votes:
              15 Vote for this issue
              Watchers:
              28 Start watching this issue

              Dates

                Created:
                Updated: