private static String readStringBytesFromDataInput(DataInput dataInput, int len)
      throws IOException {
    if (logger.isTraceEnabled(LogMarker.SERIALIZER_VERBOSE)) {
      logger.trace(LogMarker.SERIALIZER_VERBOSE, "Reading STRING_BYTES of len={}", len);
    }
    if (len == 0) {
      return "";
    }
    byte[] buf = StaticSerialization.getThreadLocalByteArray(len);
    dataInput.readFully(buf, 0, len);
    return new String(buf, 0, 0, len); // intentionally using deprecated constructor
  }
Reads an instance of {@code String} from a {@code DataInput} given the header byte already
being read. The return value may be {@code null}.

@throws IOException A problem occurs while reading from {@code in}
@since GemFire 5.7
geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java