public void validateFixedPABetweenDataStores(PartitionRegionConfig prconf) {
    boolean isDataStore = pr.localMaxMemory > 0;
    boolean isFixedPR = pr.fixedPAttrs != null;

    Set<Node> nodes = prconf.getNodes();
    for (final Node n : nodes) {
      if (isFixedPR) {
        if (n.getPRType() == Node.DATASTORE || n.getPRType() == Node.ACCESSOR_DATASTORE) {
          // throw exception
          Object[] prms = new Object[] {pr.getName()};
          throw new IllegalStateException(
              String.format(
                  "Region %s uses fixed partitioning but at least one datastore node (localMaxMemory > 0) has no fixed partitions. Please make sure that each datastore creating this region is configured with at least one fixed partition.",
                  prms));
        }
      } else {
        if (isDataStore) {
          if (n.getPRType() == Node.FIXED_PR_ACCESSOR || n.getPRType() == Node.FIXED_PR_DATASTORE) {
            // throw Exception
            Object[] prms = new Object[] {pr.getName()};
            throw new IllegalStateException(
                String.format(
                    "Region %s uses fixed partitioning but at least one datastore node (localMaxMemory > 0) has no fixed partitions. Please make sure that each datastore creating this region is configured with at least one fixed partition.",
                    prms));
          }
        }
      }
    }
  }
Validate that same partition is not defined as primary on more that one datastore
geode-core/src/main/java/org/apache/geode/internal/cache/PartitionRegionConfigValidator.java