{"record":{"id":"08699ac25fda487c","repo":"apache/beam","slug":"unknown-beam-write-property-name","errorCode":null,"errorMessage":"Unknown Beam write property: ${name}","messagePattern":"Unknown Beam write property: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"sdks/java/extensions/sql/iceberg/src/main/java/org/apache/beam/sdk/extensions/sql/meta/provider/iceberg/IcebergTable.java","lineNumber":84,"sourceCode":"  @VisibleForTesting final String tableIdentifier;\n  @VisibleForTesting final IcebergCatalogConfig catalogConfig;\n  @VisibleForTesting @Nullable Integer triggeringFrequency;\n  @VisibleForTesting final @Nullable List<String> partitionFields;\n\n  IcebergTable(String tableIdentifier, Table table, IcebergCatalogConfig catalogConfig) {\n    super(table.getSchema());\n    this.schema = table.getSchema();\n    this.tableIdentifier = tableIdentifier;\n    this.catalogConfig = catalogConfig;\n    ObjectNode properties = table.getProperties();\n    for (Map.Entry<String, JsonNode> property : properties.properties()) {\n      String name = property.getKey().toLowerCase();\n      if (name.startsWith(BEAM_WRITE_PROPERTY)) {\n        String prop = name.substring(BEAM_WRITE_PROPERTY.length());\n        if (prop.equalsIgnoreCase(TRIGGERING_FREQUENCY_FIELD)) {\n          this.triggeringFrequency = property.getValue().asInt();\n        } else {\n          throw new IllegalArgumentException(\"Unknown Beam write property: \" + name);\n        }\n      } else if (name.startsWith(BEAM_READ_PROPERTY)) {\n        // none supported yet\n        throw new IllegalArgumentException(\"Unknown Beam read property: \" + name);\n      }\n    }\n\n    this.partitionFields = table.getPartitionFields();\n  }\n\n  @Override\n  public POutput buildIOWriter(PCollection<Row> input) {\n    ImmutableMap.Builder<String, Object> configBuilder = ImmutableMap.builder();\n    configBuilder.putAll(getBaseConfig());\n    if (triggeringFrequency != null) {\n      configBuilder.put(TRIGGERING_FREQUENCY_FIELD, triggeringFrequency);\n    }\n    if (partitionFields != null) {","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/apache/beam/blob/12126d8942aaf848030c478b4c6a28c6af861c66/sdks/java/extensions/sql/iceberg/src/main/java/org/apache/beam/sdk/extensions/sql/meta/provider/iceberg/IcebergTable.java#L66-L102","documentation":"IcebergTable's constructor parses table properties for Beam-specific write options under the 'beam_write_' prefix. Only triggering_frequency is supported; any other 'beam_write_*' property is rejected with this IllegalArgumentException so typos never silently degrade write behavior.","triggerScenarios":"Creating a Beam SQL Iceberg table with a property like beam_write_batch_size=... or any misspelled variant (beam_write_triggering_frq) — anything starting with beam_write_ that isn't triggering_frequency.","commonSituations":"Typo in 'triggering_frequency', copying write options from another connector (e.g. Kafka's beam_write_* options) into an Iceberg table DDL, leftover properties from older Beam versions.","solutions":["Remove the unsupported beam_write_* property from the table properties","If you meant the trigger interval, use 'beam_write_triggering_frequency' spelled exactly","Check the Beam version's IcebergTable for the list of supported write properties — only triggering_frequency exists today"],"exampleFix":"// before\nCREATE EXTERNAL TABLE ... TBLPROPERTIES {'beam_write_parallelism':'4'}\n// after\nCREATE EXTERNAL TABLE ... TBLPROPERTIES {'beam_write_triggering_frequency':'60s'}","handlingStrategy":"validation","validationCode":"props.keySet().stream()\n  .map(String::toLowerCase)\n  .filter(k -> k.startsWith(\"beam_write_\"))\n  .filter(k -> !k.equals(\"beam_write_triggering_frequency\"))\n  .findAny()\n  .ifPresent(k -> { throw new IllegalArgumentException(\"Unsupported property: \" + k); });","typeGuard":null,"tryCatchPattern":"try { new IcebergTable(...); } catch (IllegalArgumentException e) { log.error(\"Check table properties: {}\", e.getMessage()); throw e; }","preventionTips":["Use only beam_write_triggering_frequency","Copy properties from official docs","Spell-check TBLPROPERTIES"],"tags":["sql","iceberg","table-properties","configuration"],"backgroundTag":"invalid-config-value","analyzedSha":"12126d8942aaf848030c478b4c6a28c6af861c66","analyzedAt":"2026-09-13T01:50:10.254Z","contentChangedAt":"2026-09-13T01:50:10.254Z","schemaVersion":2},"datasetVersion":"2026-09-20T03:17:13.778Z"}