code: @VisibleForTesting
      LogMetadata loadMetadata() throws DataLogInitializationException {
          try {
              Stat storingStatIn = new Stat();
              byte[] serializedMetadata = this.zkClient.getData().storingStatIn(storingStatIn).forPath(this.logNodePath);
              LogMetadata result = LogMetadata.SERIALIZER.deserialize(serializedMetadata);
              result.withUpdateVersion(storingStatIn.getVersion());
              return result;
          } catch (KeeperException.NoNodeException nne) {
              // Node does not exist: this is the first time we are accessing this log.
              log.warn("{}: No ZNode found for path '{}{}'. This is OK if this is the first time accessing this log.",
                      this.traceObjectId, this.zkClient.getNamespace(), this.logNodePath);
              return null;
          } catch (Exception ex) {
              throw new DataLogInitializationException(String.format("Unable to load ZNode contents for path '%s%s'.",
                      this.zkClient.getNamespace(), this.logNodePath), ex);
          }
      }
docs: Loads the metadata for the current log, as stored in ZooKeeper.
  
  @return A new LogMetadata object with the desired information, or null if no such node exists.
  @throws DataLogInitializationException If an Exception (other than NoNodeException) occurred.