Hi Dharam,

I believe this is due to having a value-constraint set on the region.  We
validate the field exists on the value-constraint type before creating the
index.  PdxInstance is a "special" type and should probably be ignored or
treated as if it were not contrained.  I have created a ticket for the
https://issues.apache.org/jira/browse/GEODE-2266.  Hopefully you can remove
the value-constraint and get past this issue for the time being.

-Jason

On Wed, Jan 4, 2017 at 5:54 AM Thacker, Dharam <[email protected]>
wrote:

> Hi Team,
>
>
>
> I am trying to define index on replicated region defined as below where
> PdxInstance is created using JsonFormatter.fromJSON(jsonString)!
>
>
>
> Note : I don’t have any domain model called ‘Event.java’ which is being
> converted to JSON, but I am getting Event as json string from source &
> that’s what I am pushing to cache
>
>
>
> <geode:replicated-region id=*"Event"*
>
>                      cache-ref=*"geodeCache"*
>
>                      scope=*"distributed-ack"*
>
>                      key-constraint=*"java.lang.String"*
>
>                      value-constraint=*"org.apache.geode.pdx.PdxInstance"*
>
>                      shortcut=*"REPLICATE_PERSISTENT_OVERFLOW"*
>
>                      persistent=*"true"*
>
>                      disk-synchronous=*"false"*
>
>                      disk-store-ref=*"event_diskstore"*>
>
> </geode:replicated-region>
>
>
>
> <geode:index id=*"event_indx"* expression=*"eventId"* from=*"/Event"*
> cache-ref=*"geodeCache"*/>
>
>
>
>
>
> *Exception*:
>
>
>
> *org.apache.geode.cache.query.TypeMismatchException*: The attribute or
> method name ' eventId ' could not be resolved
>
>        at org.apache.geode.cache.query.internal.ExecutionContext.resolve(
> *ExecutionContext.java:228*)
>
>        at
> org.apache.geode.cache.query.internal.CompiledID.generateCanonicalizedExpression(
> *CompiledID.java:93*)
>
>        at
> org.apache.geode.cache.query.internal.index.FunctionalIndexCreationHelper.prepareIndexExpression(
> *FunctionalIndexCreationHelper.java:498*)
>
>        ... 27 common frames omitted
>
> Wrapped by: *org.apache.geode.cache.query.IndexInvalidException*: Invalid
> indexed expression : ' eventId '
>
>        at
> org.apache.geode.cache.query.internal.index.FunctionalIndexCreationHelper.prepareIndexExpression(
> *FunctionalIndexCreationHelper.java:513*)
>
>        at
> org.apache.geode.cache.query.internal.index.FunctionalIndexCreationHelper.<init>(
> *FunctionalIndexCreationHelper.java:112*)
>
>        at
> org.apache.geode.cache.query.internal.index.IndexManager.createIndex(
> *IndexManager.java:272*)
>
>        at
> org.apache.geode.cache.query.internal.DefaultQueryService.createIndex(
> *DefaultQueryService.java:213*)
>
>        at
> org.apache.geode.cache.query.internal.DefaultQueryService.createIndex(
> *DefaultQueryService.java:160*)
>
>        at
> org.apache.geode.cache.query.internal.DefaultQueryService.createIndex(
> *DefaultQueryService.java:226*)
>
>        at
> org.apache.geode.cache.query.internal.DefaultQueryService.createIndex(
> *DefaultQueryService.java:128*)
>
>        at
> org.springframework.data.gemfire.IndexFactoryBean.createFunctionalIndex(
> *IndexFactoryBean.java:238*)
>
>        at org.springframework.data.gemfire.IndexFactoryBean.createIndex(
> *IndexFactoryBean.java:149*)
>
>        at
> org.springframework.data.gemfire.IndexFactoryBean.afterPropertiesSet(
> *IndexFactoryBean.java:98*)
>
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(
> *AbstractAutowireCapableBeanFactory.java:1642*)
>
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(
> *AbstractAutowireCapableBeanFactory.java:1579*)
>
>        ... 16 common frames omitted
>
> Wrapped by: *org.springframework.beans.factory.BeanCreationException*:
> Error creating bean with name ‘event_indx’: Invocation of init method
> failed; nested exception is
> *org.apache.geode.cache.query.IndexInvalidException*: Invalid indexed
> expression : ' eventId '
>
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(
> *AbstractAutowireCapableBeanFactory.java:1583*)
>
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(
> *AbstractAutowireCapableBeanFactory.java:545*)
>
>        at
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(
> *AbstractAutowireCapableBeanFactory.java:482*)
>
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(
> *AbstractBeanFactory.java:306*)
>
>        at
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(
> *DefaultSingletonBeanRegistry.java:230*)
>
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(
> *AbstractBeanFactory.java:302*)
>
>        at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(
> *AbstractBeanFactory.java:197*)
>
>        at
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(
> *DefaultListableBeanFactory.java:732*)
>
>        at
> org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(
> *AbstractApplicationContext.java:861*)
>
>        at
> org.springframework.context.support.AbstractApplicationContext.refresh(
> *AbstractApplicationContext.java:541*)
>
>        at
> org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(
> *EmbeddedWebApplicationContext.java:122*)
>
>        at org.springframework.boot.SpringApplication.refresh(
> *SpringApplication.java:761*)
>
>        at org.springframework.boot.SpringApplication.refreshContext(
> *SpringApplication.java:371*)
>
>        at org.springframework.boot.SpringApplication.run(
> *SpringApplication.java:315*)
>
>        at org.springframework.boot.SpringApplication.run(
> *SpringApplication.java:1186*)
>
>        at org.springframework.boot.SpringApplication.run(
> *SpringApplication.java:1175*)
>
>
>
> Thanks,
>
> Dharam
>
> This email is confidential and subject to important disclaimers and
> conditions including on offers for the purchase or sale of securities,
> accuracy and completeness of information, viruses, confidentiality, legal
> privilege, and legal entity disclaimers, available at
> http://www.jpmorgan.com/pages/disclosures/email
>

Reply via email to