InstanceAlreadyExistsException: jetbrains.exodus.entitystore: type=EntityStoreConfig

匆匆过客 提交于 2021-01-29 06:15:37

问题


What would cause this exception to be thrown?

Caused by: javax.management.InstanceAlreadyExistsException: jetbrains.exodus.entitystore: type=EntityStoreConfig, location=/var/xodus/master, name=persistentEntityStore
    at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:437)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1898)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:966)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:900)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:324)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
    at com.sun.enterprise.v3.admin.DynamicInterceptor.registerMBean(DynamicInterceptor.java:393)
    at jetbrains.exodus.management.MBeanBase.<init>(MBeanBase.java:36)

From this code:

public PersistentEntityStore getPersistentEntityStore(String xodusRoot, String dir, boolean isReadOnly) {
    
        if(persistentEntityStoreCache == null) {
          persistentEntityStoreCache = buildPersistentEntityStoreCache();
        }
        PersistentEntityStore entityStore = persistentEntityStoreCache.get(xodusRoot + dir);
        if (entityStore == null) {
          Environment environment = getEnvironment(xodusRoot, dir);
          entityStore = PersistentEntityStores.newInstance(environment); // <-- here
   entityStore.getConfig().setDebugSearchForIncomingLinksOnDelete(true);
          entityStore.getConfig().setRefactoringHeavyLinks(true);
          entityStore.getConfig().setManagementEnabled(false);
          PersistentEntityStore finalEntityStore = entityStore;
          entityStore.executeInTransaction(
                  txn -> {
                    finalEntityStore.registerCustomPropertyType(
                        txn, EmbeddedEntityIterable.class, EmbeddedEntityBinding.BINDING);
                    finalEntityStore.registerCustomPropertyType(
                        txn, EmbeddedArrayIterable.class, EmbeddedEntityBinding.BINDING);
                    persistentEntityStoreCache.put(xodusRoot + dir, finalEntityStore);
                  });
        }
        PersistentEntityStore persistentEntityStore = persistentEntityStoreCache.get(xodusRoot + dir);
        return persistentEntityStore;
      }

回答1:


All settings that are documented as Mutable at runtime: no cannot be modified after instance is created. At least, such modifications have no effect. So you should turn management off before creation of the EntityStore instance, not after:

Environment environment = getEnvironment(xodusRoot, dir);
PersistentEntityStoreConfig config = new PersistentEntityStoreConfig().setManagementEnabled(false);
entityStore = PersistentEntityStores.newInstance(environment, config, "your EntityStore name");


来源:https://stackoverflow.com/questions/63965457/instancealreadyexistsexception-jetbrains-exodus-entitystore-type-entitystoreco

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!