public Region<String, Configuration> getConfigurationRegion() {
    Region<String, Configuration> configRegion = cache.getRegion(CONFIG_REGION_NAME);
    if (configRegion != null) {
      return configRegion;
    }

    try {
      File diskDir = configDiskDirPath.toFile();

      if (!diskDir.exists() && !diskDir.mkdirs()) {
        throw new IOException("Cannot create directory at " + configDiskDirPath);
      }

      File[] diskDirs = {diskDir};
      cache.createDiskStoreFactory().setDiskDirs(diskDirs).setAutoCompact(true)
          .setMaxOplogSize(10).create(CLUSTER_CONFIG_DISK_STORE_NAME);

      InternalRegionFactory<String, Configuration> regionFactory =
          cache.createInternalRegionFactory(RegionShortcut.REPLICATE_PERSISTENT);
      regionFactory.addCacheListener(new ConfigurationChangeListener(this, cache));
      regionFactory.setDiskStoreName(CLUSTER_CONFIG_DISK_STORE_NAME);
      regionFactory.setIsUsedForMetaRegion(true).setMetaRegionWithTransactions(false);
      return regionFactory.create(CONFIG_REGION_NAME);
    } catch (RuntimeException e) {
      status.set(SharedConfigurationStatus.STOPPED);
      // throw RuntimeException as is
      throw e;
    } catch (Exception e) {
      status.set(SharedConfigurationStatus.STOPPED);
      // turn all other exceptions into runtime exceptions
      throw new RuntimeException("Error occurred while initializing cluster configuration", e);
    }
  }
Gets the region containing the shared configuration data. The region is created , if it does
not exist already. Note : this could block if this locator contains stale persistent
configuration data.

@return {@link Region} ConfigurationRegion, this should never be null
geode-core/src/main/java/org/apache/geode/distributed/internal/InternalConfigurationPersistenceService.java