[ https://issues.apache.org/jira/browse/RANGER-1243?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15725391#comment-15725391 ]
Don Bosco Durai commented on RANGER-1243: ----------------------------------------- [~blekinge], thanks for the detailed explanation, debug logs and code change. Seems loading the Ranger KMS servicedef is failing. Ideally, it should not. Which version of Ranger are you using? The line #158 in the latest code is empty line. org.apache.ranger.service.RangerServiceDefServiceBase.mapViewToEntityBean(RangerServiceDefServiceBase.java:158) Also, it seems you have created a pull request. Ranger is not yet using pull/merge process? Can you create a review board request with your code change? https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=55151244 Thanks > One failed embedded ServiceDef creating prevent any service from being > created in Ranger > ---------------------------------------------------------------------------------------- > > Key: RANGER-1243 > URL: https://issues.apache.org/jira/browse/RANGER-1243 > Project: Ranger > Issue Type: Bug > Components: admin, plugins, Ranger > Affects Versions: 0.5.2, 0.6.0, 0.7.0, 0.6.1, 0.6.2, 0.6.3 > Environment: IBM IOP 4.2. Only reproduced on Ranger 0.5.2 but the > relevant code seems unchanged in newer versions. > Reporter: Asger Askov Blekinge > > EmbeddedServiceDefsUtil have this method (I removed some log statements to > make the code more clear) > {code} > public class EmbeddedServiceDefsUtil { > ... > private RangerServiceDef getOrCreateServiceDef(ServiceStore store, > String serviceDefName) { > .... > RangerServiceDef ret = null; > boolean createServiceDef = > (CollectionUtils.isEmpty(supportedServiceDefs) || > supportedServiceDefs.contains(serviceDefName)); > try { > ret = store.getServiceDefByName(serviceDefName); > if(ret == null && createEmbeddedServiceDefs && > createServiceDef) { > ret = loadEmbeddedServiceDef(serviceDefName); > if (ret.getId() != null) { > > store.setPopulateExistingBaseFields(true); > ret = store.createServiceDef(ret); > > store.setPopulateExistingBaseFields(false); > } else { > ret = store.createServiceDef(ret); > } > LOG.info("created embedded service-def " + > serviceDefName); > } > } catch(Exception excp) { > > LOG.fatal("EmbeddedServiceDefsUtil.getOrCreateServiceDef(): failed to > load/create serviceType " + serviceDefName, excp); > } > ... > return ret; > } > } > {code} > When creating a service def, the flag PopulateExistingBaseFields must be set > to true, but it should be set to false afterwards. > If the statement ``` ret = store.createServiceDef(ret); ``` throws an > exception, the flag is never reset. But since the catch statement do not > rethrow the exception, null will be returned and Ranger will start normally. > Now, the flag PopulateExistingBaseFields are used by a lot of methods in > ServiceDBStore > * public RangerServiceDef **createServiceDef**(RangerServiceDef serviceDef) > throws Exception > * public RangerService **createService**(RangerService service) throws > Exception > * public RangerService **updateService**(RangerService service) throws > Exception > * public RangerPolicy **createPolicy**(RangerPolicy policy) throws Exception { > For createService and updateService, it will cause the method to select > between svcServiceWithAssignedId and svcService. svcServiceWithAssignedId > require that the incoming service have an ID. Services created via the web > gui and via the ambari integration do NOT have a pre-selected ID. They cannot > be created, and thus you cannot actually use Ranger. > Now, how can ```ret = store.createServiceDef(ret);``` fail? I do not know, > but it happened on my system with this exception log entry > {code} > 2016-12-06 09:34:25,850 [kact-man-001.kact.sblokalnet-startStop-1] DEBUG > org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil > (EmbeddedServiceDefsUtil.java:136) - ==> > EmbeddedServiceDefsUtil.getOrCreateServiceDef(kms) > > 2016-12-06 09:34:25,850 [kact-man-001.kact.sblokalnet-startStop-1] DEBUG > org.apache.ranger.biz.ServiceDBStore (ServiceDBStore.java:934) - ==> > ServiceDefDBStore.getServiceDefByName(kms) > > 2016-12-06 09:34:25,855 [kact-man-001.kact.sblokalnet-startStop-1] DEBUG > org.apache.ranger.biz.ServiceDBStore (ServiceDBStore.java:946) - == > ServiceDefDBStore.getServiceDefByName(kms): null > > 2016-12-06 09:34:25,855 [kact-man-001.kact.sblokalnet-startStop-1] DEBUG > org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil > (EmbeddedServiceDefsUtil.java:168) - ==> > EmbeddedServiceDefsUtil.loadEmbeddedServiceDef(kms) > > 2016-12-06 09:34:25,867 [kact-man-001.kact.sblokalnet-startStop-1] DEBUG > org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil > (EmbeddedServiceDefsUtil.java:182) - ==> > EmbeddedServiceDefsUtil.loadEmbeddedServiceDef(kms) > > 2016-12-06 09:34:25,867 [kact-man-001.kact.sblokalnet-startStop-1] INFO > org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil > (EmbeddedServiceDefsUtil.java:146) - creating embedded service-def kms > > 2016-12-06 09:34:25,868 [kact-man-001.kact.sblokalnet-startStop-1] DEBUG > org.apache.ranger.biz.ServiceDBStore (ServiceDBStore.java:242) - ==> > ServiceDefDBStore.createServiceDef(RangerServiceDef={id={7} guid={null} > isEnabled={true} createdBy={null} updatedBy={null} createTime={null} > updateTime={null} version={null} name={kms} > implClass={org.apache.ranger.services.kms.RangerServiceKMS} label={KMS} > description={KMS} rbKeyLabel={null} rbKeyDescription={null} c > onfigs={RangerServiceConfigDef={itemId={provider} name={provider} > type={string} subType={null} mandatory={true} defaultValue={null} > validationRegEx={null} validationMessage={null} uiHint={null} label={KMS URL} > description={null} rbKeyLabel={null} rbKeyDescription={null} > rbKeyValidationMessage={null} }RangerServiceConfigDef={itemId={username} > name={username} type={string} subType={null} mandatory={true} > defaultValue={null} validationRegEx={null} validationM > essage={null} uiHint={null} label={Username} description={null} > rbKeyLabel={null} rbKeyDescription={null} rbKeyValidationMessage={null} > }RangerServiceConfigDef={itemId={password} name={password} type={password} > subType={null} mandatory={true} defaultValue={null} validationRegEx={null} > validationMessage={null} uiHint={null} label={Password} description={null} > rbKeyLabel={null} rbKeyDescription={null} rbKeyValidationMessage={null} }} > resources={RangerResourc > eDef={itemId={1} name={keyname} type={string} level={10} parent={} > mandatory={true} lookupSupported={true} recursiveSupported={false} > excludesSupported={false} > matcher={org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher} > matcherOptions={{wildCard=true, ignoreCase=false}} validationRegEx={} > validationMessage={} uiHint={} label={Key Name} description={Key Name} > rbKeyLabel={null} rbKeyDescription={null} rbKeyValidationMessage={null} }} > acce > ssTypes={RangerAccessTypeDef={itemId={1} name={create} label={Create} > rbKeyLabel={null} impliedGrants={} }RangerAccessTypeDef={itemId={2} > name={delete} label={Delete} rbKeyLabel={null} impliedGrants={} > }RangerAccessTypeDef={itemId={3} name={rollover} label={Rollover} > rbKeyLabel={null} impliedGrants={} }RangerAccessTypeDef={itemId={4} > name={setkeymaterial} label={Set Key Material} rbKeyLabel={null} > impliedGrants={} }RangerAccessTypeDef={itemId={5} name={get > } label={Get} rbKeyLabel={null} impliedGrants={} > }RangerAccessTypeDef={itemId={6} name={getkeys} label={Get Keys} > rbKeyLabel={null} impliedGrants={} }RangerAccessTypeDef={itemId={7} > name={getmetadata} label={Get Metadata} rbKeyLabel={null} impliedGrants={} > }RangerAccessTypeDef={itemId={8} name={generateeek} label={Generate EEK} > rbKeyLabel={null} impliedGrants={} }RangerAccessTypeDef={itemId={9} > name={decrypteek} label={Decrypt EEK} rbKeyLabel={null} implie > dGrants={} }} policyConditions={} contextEnrichers={} enums={} }) > > 2016-12-06 09:34:25,870 [kact-man-001.kact.sblokalnet-startStop-1] DEBUG > org.apache.ranger.common.db.BaseDao (BaseDao.java:239) - Ignoring > BaseDao.setIdentityInsert(). This should be executed if DB flavor is > sqlserver. > > 2016-12-06 09:34:25,872 [kact-man-001.kact.sblokalnet-startStop-1] FATAL > org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil > (EmbeddedServiceDefsUtil.java:156) - > EmbeddedServiceDefsUtil.getOrCreateServiceDef(): failed to load/create > serviceType kms > java.lang.NullPointerException > at > org.apache.ranger.service.RangerServiceDefServiceBase.mapViewToEntityBean(RangerServiceDefServiceBase.java:158) > at > org.apache.ranger.service.RangerServiceDefWithAssignedIdService.mapViewToEntityBean(RangerServiceDefWithAssignedIdService.java:31) > at > org.apache.ranger.service.RangerServiceDefWithAssignedIdService.mapViewToEntityBean(RangerServiceDefWithAssignedIdService.java:25) > at > org.apache.ranger.service.RangerBaseModelService.populateEntityBeanForCreate(RangerBaseModelService.java:180) > at > org.apache.ranger.service.RangerBaseModelService.preCreate(RangerBaseModelService.java:217) > at > org.apache.ranger.service.RangerBaseModelService.create(RangerBaseModelService.java:225) > at > org.apache.ranger.biz.ServiceDBStore.createServiceDef(ServiceDBStore.java:268) > at > org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil.getOrCreateServiceDef(EmbeddedServiceDefsUtil.java:149) > at > org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil.init(EmbeddedServiceDefsUtil.java:96) > at > org.apache.ranger.biz.ServiceDBStore$1.doInTransaction(ServiceDBStore.java:223) > at > org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130) > at > org.apache.ranger.biz.ServiceDBStore.initStore(ServiceDBStore.java:220) > 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 > org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:346) > at > org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:299) > at > org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:132) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1448) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) > at > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:872) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:814) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:731) > at > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:485) > at > org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:92) > at > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) > at > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:872) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:814) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:731) > at > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:485) > at > org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:92) > at > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) > at > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:872) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:814) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:731) > at > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:485) > at > org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:92) > at > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) > at > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:872) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:814) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:731) > at > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:485) > at > org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:92) > at > org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:284) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517) > at > org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) > at > org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) > at > org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) > at > org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) > at > org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) > at > org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:605) > at > org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925) > at > org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472) > at > org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:383) > at > org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) > at > org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) > at > org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4992) > at > org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5490) > at > org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) > at > org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575) > at > org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565) > 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) > > 2016-12-06 09:34:25,875 [kact-man-001.kact.sblokalnet-startStop-1] DEBUG > org.apache.ranger.plugin.store.EmbeddedServiceDefsUtil > (EmbeddedServiceDefsUtil.java:160) - <== > EmbeddedServiceDefsUtil.getOrCreateServiceDef(kms): RangerServiceDef={id={7} > guid={null} isEnabled={true} createdBy={null} updatedBy={null} > createTime={null} updateTime={null} version={1} name={kms} > implClass={org.apache.ranger.services.kms.RangerServiceKMS} label={KMS} > description={KMS} rbKeyLabel={null} rbKeyDescription={null} > configs={RangerServiceConfigDef={itemId={provider} name={provider} > type={string} subType={null} mandatory={true} defaultValue={null} > validationRegEx={null} validationMessage={null} uiHint={null} label={KMS URL} > description={null} rbKeyLabel={null} rbKeyDescription={null} > rbKeyValidationMessage={null} }RangerServiceConfigDef={itemId={username} > name={username} type={string} subType={null} mandatory={true} > defaultValue={null} validationRegEx={null} validationMessage={null} > uiHint={null} label={Username} description={null} rbKeyLabel={null} > rbKeyDescription={null} rbKeyValidationMessage={null} > }RangerServiceConfigDef={itemId={password} name={password} type={password} > subType={null} mandatory={true} defaultValue={null} validationRegEx={null} > validationMessage={null} uiHint={null} label={Password} description={null} > rbKeyLabel={null} rbKeyDescription={null} rbKeyValidationMessage={null} }} > resources={RangerResourceDef={itemId={1} name={keyname} type={string} > level={10} parent={} mandatory={true} lookupSupported={true} > recursiveSupported={false} excludesSupported={false} > matcher={org.apache.ranger.plugin.resourcematcher.RangerDefaultResourceMatcher} > matcherOptions={{wildCard=true, ignoreCase=false}} validationRegEx={} > validationMessage={} uiHint={} label={Key Name} description={Key Name} > rbKeyLabel={null} rbKeyDescription={null} rbKeyValidationMessage={null} }} > accessTypes={RangerAccessTypeDef={itemId={1} name={create} label={Create} > rbKeyLabel={null} impliedGrants={} }RangerAccessTypeDef={itemId={2} > name={delete} label={Delete} rbKeyLabel={null} impliedGrants={} > }RangerAccessTypeDef={itemId={3} name={rollover} label={Rollover} > rbKeyLabel={null} impliedGrants={} }RangerAccessTypeDef={itemId={4} > name={setkeymaterial} label={Set Key Material} rbKeyLabel={null} > impliedGrants={} }RangerAccessTypeDef={itemId={5} name={get} label={Get} > rbKeyLabel={null} impliedGrants={} }RangerAccessTypeDef={itemId={6} > name={getkeys} label={Get Keys} rbKeyLabel={null} impliedGrants={} > }RangerAccessTypeDef={itemId={7} name={getmetadata} label={Get Metadata} > rbKeyLabel={null} impliedGrants={} }RangerAccessTypeDef={itemId={8} > name={generateeek} label={Generate EEK} rbKeyLabel={null} impliedGrants={} > }RangerAccessTypeDef={itemId={9} name={decrypteek} label={Decrypt EEK} > rbKeyLabel={null} impliedGrants={} }} policyConditions={} contextEnrichers={} > enums={} } > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)