provectus/kafka-ui · error · ValidationException

Input csv is not valid - blank value in colum

Error message

Input csv is not valid - blank value in colum 

What it means

AclCsv.parseCsvLine trims each of the 7 CSV values and rejects any that are blank, throwing 'Input csv is not valid - blank value in colum <i>, line <n>'. Every ACL field (principal, resource type, pattern, resource name, operation, permission, host) must be non-empty.

Solutions

  1. Fill in the blank column (index given in the message) on the reported line
  2. Use '*' for wildcard values where Kafka allows it (e.g. host)
  3. Remove fully empty lines before parsing (blank lines are skipped, but rows with stray commas are not)
  4. Re-export the CSV ensuring no null/empty cells

Example fix

// before
User:alice,TOPIC,LITERAL,my-topic,READ,ALLOW,
// after
User:alice,TOPIC,LITERAL,my-topic,READ,ALLOW,*
Defensive patterns

Strategy: validation

Validate before calling

// Java (caller)
String[] vals = line.split(",");
for (int i = 0; i < vals.length; i++) {
  if (vals[i].trim().isBlank()) throw new IllegalArgumentException("Blank column " + i + " on ACL CSV line");
}

Try / catch

try {
  Collection<AclBinding> bindings = AclCsv.parseCsv(csv);
} catch (ValidationException e) {
  if (e.getMessage().contains("blank value")) {
    log.error("Fill blank ACL CSV field: {}", e.getMessage());
  } else { throw e; }
}

Prevention

When it happens

Trigger: An ACL CSV line with an empty field after trimming — e.g. ',,LITERAL,...' or a trailing comma leaving the host column empty.

Common situations: Template files with unfilled placeholders; rows exported with optional empty columns; accidental double commas; whitespace-only values.

Understand the failure class

Background: "must not be empty", "cannot be empty" — required-field validation errors across open-source libraries — this error's family across 41 libraries.

Related errors


AI-assisted analysis of provectus/kafka-ui@83b5a60cc0 (2026-09-08). Data as JSON: /api/errors/9927e5fb4ff2b33e. Report an issue: GitHub.

Appendix: source

Thrown at kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/acl/AclCsv.java:50

        "%s,%s,%s,%s,%s,%s,%s",
        filter.principal(),
        pattern.resourceType(),
        pattern.patternType(),
        pattern.name(),
        filter.operation(),
        filter.permissionType(),
        filter.host()
    );
  }

  private static AclBinding parseCsvLine(String csv, int line) {
    String[] values = csv.split(VALUES_SEPARATOR);
    if (values.length != 7) {
      throw new ValidationException("Input csv is not valid - there should be 7 columns in line " + line);
    }
    for (int i = 0; i < values.length; i++) {
      if ((values[i] = values[i].trim()).isBlank()) {
        throw new ValidationException("Input csv is not valid - blank value in colum " + i + ", line " + line);
      }
    }
    try {
      return new AclBinding(
          new ResourcePattern(
              ResourceType.valueOf(values[1]), values[3], PatternType.valueOf(values[2])),
          new AccessControlEntry(
              values[0], values[6], AclOperation.valueOf(values[4]), AclPermissionType.valueOf(values[5]))
      );
    } catch (IllegalArgumentException enumParseError) {
      throw new ValidationException("Error parsing enum value in line " + line);
    }
  }

  public static Collection<AclBinding> parseCsv(String csvString) {
    String[] lines = csvString.split(LINE_SEPARATOR);
    if (lines.length == 0) {
      throw new ValidationException("Error parsing ACL csv file: no lines in file");

View on GitHub (pinned to 83b5a60cc0)