Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagejs
{
  "apiKey": 35,
  "type": "response",
  "name": "DescribeLogDirsResponse",
  // Starting in version 1, on quota violation, brokers send out responses before throttling.
  "validVersions": "0-4",
  // Version 2 is the first flexible version.
  // Version 3 adds the top-level ErrorCode field
  // Version 4 adds the TotalSpace and UsableSpace fields
  "flexibleVersions": "2+",
  "fields": [
    { "name": "ThrottleTimeMs", "type": "int32", "versions": "0+",
      "about": "The duration in milliseconds for which the request was throttled due to a quota violation, or zero if the request did not violate any quota." },
    { "name": "ErrorCode", "type": "int16", "versions": "3+", "about": "The error code, or 0 if there was no error." },
    { "name": "Results", "type": "[]DescribeLogDirsResult", "versions": "0+",
      "about": "The log directories.", "fields": [
      { "name": "ErrorCode", "type": "int16", "versions": "0+",
        "about": "The error code, or 0 if there was no error." },
      { "name": "LogDir", "type": "string", "versions": "0+",
        "about": "The absolute log directory path." },
      { "name": "Topics", "type": "[]DescribeLogDirsTopic", "versions": "0+",
        "about": "Each topic.", "fields": [
          ...
        ]}
      ]},
      { "name": "TotalSpaceTotalSpaceBytes", "type": "int64", "versions": "4+", "ignorable": true, "default": "-1",
        "about": "The total size in bytes of the log directory."
      },
      { "name": "UsableSpaceUsableSpaceBytes", "type": "int64", "versions": "4+", "ignorable": true, "default": "-1",
        "about": "The usable size in bytes of the log directory."
      }
    ]}
  ]
}

...

When handling a DescribeLogDirs request, ReplicaManager will retrieve the totalSpace total and usableSpace usable space in bytes from each logdir. In case these sizes are larger than Long.MAX_VALUE, (see https://bugs.openjdk.java.net/browse/JDK-8162520), brokers will return Long.MAX_VALUE.

...

LogDirDescription is used by the Admin API to represent the results from describeLogDirs(). Two new methods are added to this type as well as a new constant:

Code Block
languagejava
public static final long UNKNOWN_SPACE = -1L;


public long totalSpace() { return totalSpace; }

public long usableSpace() { return usableSpace; }

...

/**
 * Returns the total size of the log directory in bytes. The optional will be empty if the broker does not support this feature or if an error happened accessing the log directory (see the error field).
 */
public OptionalLong totalSpaceBytes()

/**
 * Returns the currently usable size of the log directory in bytes. The optional will be empty if the broker does not support this feature or if an error happened accessing the log directory (see the error field).
 */ 
public OptionalLong usableSpaceBytes()

Compatibility, Deprecation, and Migration Plan

...