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": "TotalBytes", "type": "int64", "versions": "4+", "ignorable": true, "default": "-1",
        "about": "The total size in bytes of the volume the log directory is in."
      },
      { "name": "UsableBytes", "type": "int64", "versions": "4+", "ignorable": true, "default": "-1",
        "about": "The usable size in bytes of the volume the log directory is in."
      }
    ]}
  ]
}

ReplicaManager

When handling a DescribeLogDirs request, ReplicaManager will retrieve the total and usable space in bytes from of the volume each logdir is into. 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.

...

Code Block
languagejava
/**
 * Returns the total size in bytes of the volume the log directory inis bytesinto. 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 totalBytes()

/**
 * Returns the currently usable size in bytes of volume the log directory inis bytesinto. 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 usableBytes()

If multiple log directories are on the same actual volume, they will both return the sizes of that volume.

Compatibility, Deprecation, and Migration Plan

...