Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-6157

AssertionError occurs when trying to create (HASH) Index on Invalid Region Entry

    XMLWordPrintableJSON

Details

    Description

      When attempting to add an OQL Index to a Region with existing data, containing entries that have been invalidated, and when the JVM's assertion facility is enabled (i.e. java -ea ...), then Geode will throw a AssertionError:

      [error 2018/11/15 11:41:35.218 PST <main> tid=0x1] Application run failed
      org.springframework.context.ApplicationContextException: Failed to start bean 'ClusteredSpringSessions'; nested exception is java.lang.AssertionError: value in RegionEntry should not be INVALID
      	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:185)
      	at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53)
      	at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360)
      	at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158)
      	at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122)
      	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:879)
      	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:161)
      	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
      	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
      	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)
      	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
      	at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
      	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
      	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
      	at example.app.ConcurrentHttpSessionAccessExampleApplication.main(ConcurrentHttpSessionAccessExampleApplication.java:71)
      Caused by: java.lang.AssertionError: value in RegionEntry should not be INVALID
      	at org.apache.geode.cache.query.internal.index.HashIndex$IMQEvaluator.evaluate(HashIndex.java:1049)
      	at org.apache.geode.cache.query.internal.index.HashIndex.addMapping(HashIndex.java:177)
      	at org.apache.geode.cache.query.internal.index.AbstractIndex.addIndexMapping(AbstractIndex.java:489)
      	at org.apache.geode.cache.query.internal.index.IndexManager.addIndexMapping(IndexManager.java:1159)
      	at org.apache.geode.cache.query.internal.index.IndexManager.processAction(IndexManager.java:1103)
      	at org.apache.geode.cache.query.internal.index.IndexManager.updateIndexes(IndexManager.java:992)
      	at org.apache.geode.cache.query.internal.index.IndexManager.updateIndexes(IndexManager.java:967)
      	at org.apache.geode.internal.cache.AbstractRegionMap.initialImagePut(AbstractRegionMap.java:1032)
      	at org.apache.geode.internal.cache.LocalRegion.refreshEntriesFromServerKeys(LocalRegion.java:4277)
      	at org.apache.geode.internal.cache.LocalRegion.processSingleInterest(LocalRegion.java:3798)
      	at org.apache.geode.internal.cache.LocalRegion.registerInterest(LocalRegion.java:3851)
      	at org.springframework.data.gemfire.client.ClientRegionFactoryBean.lambda$registerInterests$9(ClientRegionFactoryBean.java:425)
      	at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
      	at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
      	at org.springframework.data.gemfire.client.ClientRegionFactoryBean.registerInterests(ClientRegionFactoryBean.java:418)
      	at org.springframework.data.gemfire.client.ClientRegionFactoryBean.start(ClientRegionFactoryBean.java:412)
      	at java.util.Optional.ifPresent(Optional.java:159)
      	at org.springframework.data.gemfire.config.annotation.support.CacheTypeAwareRegionFactoryBean.start(CacheTypeAwareRegionFactoryBean.java:538)
      	at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182)
      	... 14 more
      

      This error seems mostly benign and when you disable Java assertions (i.e. do not include the -ea switch to the java launcher when starting the server, all is well.

      Attachments

        Activity

          People

            Unassigned Unassigned
            jblum John Blum
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated: