{"record":{"id":"a9b491d06f79d670","repo":"lancedb/lancedb","slug":"unknown-sharding-mode","errorCode":null,"errorMessage":"Unknown sharding mode: ","messagePattern":"Unknown sharding mode: ","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"java/lancedb-core/src/main/java/com/lancedb/LsmWriteSpec.java","lineNumber":64,"sourceCode":"    UNSHARDED(\"unsharded\");\n\n    private final String wireName;\n\n    Sharding(String wireName) {\n      this.wireName = wireName;\n    }\n\n    String wireName() {\n      return wireName;\n    }\n\n    static Sharding fromWireName(String name) {\n      for (Sharding s : values()) {\n        if (s.wireName.equals(name)) {\n          return s;\n        }\n      }\n      throw new IllegalArgumentException(\"Unknown sharding mode: \" + name);\n    }\n  }\n\n  private final Sharding sharding;\n  private final String column;\n  private final Integer numBuckets;\n  private final List<String> maintainedIndexes;\n  private final Map<String, String> writerConfigDefaults;\n\n  private LsmWriteSpec(\n      Sharding sharding,\n      String column,\n      Integer numBuckets,\n      List<String> maintainedIndexes,\n      Map<String, String> writerConfigDefaults) {\n    this.sharding = sharding;\n    this.column = column;\n    this.numBuckets = numBuckets;","sourceCodeStart":46,"sourceCodeEnd":82,"githubUrl":"https://github.com/lancedb/lancedb/blob/c7b051aff7039333a3f61b79217246c27676806a/java/lancedb-core/src/main/java/com/lancedb/LsmWriteSpec.java#L46-L82","documentation":"LsmWriteSpec.Sharding.fromWireName maps a wire-protocol string (e.g. from server JSON) to the Sharding enum. If the name does not match any known wireName, an IllegalArgumentException naming the unknown mode is thrown.","triggerScenarios":"Deserializing an LsmWriteSpec whose JSON \"sharding.mode\" field contains a string not present among the enum's wireNames — typically from a newer/older server or hand-written JSON.","commonSituations":"Client/server version mismatch where the server emits a sharding mode this client version does not know; typos when constructing JSON manually; custom sharding modes unsupported by this client.","solutions":["Upgrade the Java client to a version that recognizes the server's sharding mode","Verify the server's get_lsm_write_spec output and use only modes supported by your client version","Fix typos in any hand-authored JSON so \"mode\" matches a valid wire name (bucket/identity/none-style values)"],"exampleFix":"// before\n{\"sharding\": {\"mode\": \"hash\"}} // client only knows \"bucket\"\n// after\n{\"sharding\": {\"mode\": \"bucket\", \"column\": \"id\", \"num_buckets\": 16}}","handlingStrategy":"validation","validationCode":"Set<String> known = Set.of(\"bucket\", \"identity\", \"none\"); // match client Sharding wireNames\nString mode = json.path(\"sharding\").path(\"mode\").asText(null);\nif (mode == null || !known.contains(mode)) {\n  throw new IllegalArgumentException(\"unsupported sharding mode: \" + mode);\n}","typeGuard":null,"tryCatchPattern":"try {\n  LsmWriteSpec.fromJson(node);\n} catch (IllegalArgumentException e) {\n  if (e.getMessage().startsWith(\"Unknown sharding mode\")) {\n    // fall back to unsharded or upgrade client\n  } else throw e;\n}","preventionTips":["Keep client and server versions aligned","Validate wire names against the client's Sharding enum before deserializing","Test JSON contract in CI with the deployed server version"],"tags":["java","enum","deserialization","lsm"],"backgroundTag":"invalid-enum-value","analyzedSha":"c7b051aff7039333a3f61b79217246c27676806a","analyzedAt":"2026-09-08T23:42:37.579Z","contentChangedAt":"2026-09-08T23:42:37.579Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}