@Override
  public int defineType(PdxType newType) {
    statistics.typeDefined();
    verifyConfiguration();
    Integer existingId = reverseMap.getIdFromReverseMap(newType);
    if (existingId != null) {
      return existingId;
    }
    lock();
    try {
      if (shouldReload()) {
        buildReverseMapsFromRegion();
      }
      reverseMap.flushPendingReverseMap();

      // double check if my PdxType is in the reverse map in case it was just flushed into it
      existingId = reverseMap.getIdFromReverseMap(newType);
      if (existingId != null) {
        return existingId;
      }

      int id = allocateTypeId(newType);
      newType.setTypeId(id);
      updateIdToTypeRegion(newType);

      return newType.getTypeId();
    } finally {
      // flush the reverse map for the member that introduced this new PdxType
      reverseMap.flushPendingReverseMap();
      unlock();
    }
  }
For bug #43690 we cannot use shared sockets when doing pdx type registration
geode-core/src/main/java/org/apache/geode/pdx/internal/PeerTypeRegistration.java