{"record":{"id":"3419c8b9d9b2be5f","repo":"apache/druid","slug":"property-s-must-be-set","errorCode":null,"errorMessage":"Property[%s] must be set","messagePattern":"Property\\[(.+?)\\] must be set","errorType":"validation","errorClass":"IAE","httpStatus":null,"severity":"error","filePath":"processing/src/main/java/org/apache/druid/java/util/emitter/core/Emitters.java","lineNumber":83,"sourceCode":"          LOG_EMITTER_PROP,\n          HTTP_EMITTER_PROP,\n          CUSTOM_EMITTER_TYPE_PROP\n      );\n    }\n    return jsonMapper.convertValue(jsonified, EmitterFactory.class).makeEmitter(jsonMapper, httpClient, lifecycle);\n  }\n\n  // Package-visible for unit tests\n\n  static Map<String, Object> makeHttpMap(Properties props)\n  {\n    Map<String, Object> httpMap = new HashMap<>();\n\n    final String urlProperty = \"org.apache.druid.java.util.emitter.http.url\";\n\n    final String baseUrl = props.getProperty(urlProperty);\n    if (baseUrl == null) {\n      throw new IAE(\"Property[%s] must be set\", urlProperty);\n    }\n\n    httpMap.put(\"recipientBaseUrl\", baseUrl);\n    httpMap.put(\"flushMillis\", Long.parseLong(props.getProperty(\"org.apache.druid.java.util.emitter.flushMillis\", \"60000\")));\n    httpMap.put(\"flushCount\", Integer.parseInt(props.getProperty(\"org.apache.druid.java.util.emitter.flushCount\", \"300\")));\n    /**\n     * The defaultValue for \"org.apache.druid.java.util.emitter.http.flushTimeOut\" must be same as {@link HttpEmitterConfig.DEFAULT_FLUSH_TIME_OUT}\n     * */\n    httpMap.put(\n        \"flushTimeOut\",\n        Long.parseLong(props.getProperty(\n            \"org.apache.druid.java.util.emitter.http.flushTimeOut\",\n            String.valueOf(Long.MAX_VALUE)\n        ))\n    );\n    if (props.containsKey(\"org.apache.druid.java.util.emitter.http.basicAuthentication\")) {\n      httpMap.put(\"basicAuthentication\", props.getProperty(\"org.apache.druid.java.util.emitter.http.basicAuthentication\"));\n    }","sourceCodeStart":65,"sourceCodeEnd":101,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/processing/src/main/java/org/apache/druid/java/util/emitter/core/Emitters.java#L65-L101","documentation":"Emitters.makeHttpMap() reads the HTTP emitter target URL from property org.apache.druid.java.util.emitter.http.url. If the property is absent (null), it throws IllegalArgumentException 'Property[...] must be set', because an HTTP emitter has nowhere to send events without a recipient base URL.","triggerScenarios":"Configuring an HTTP emitter path where the http emitter URL property is triggered but the org.apache.druid.java.util.emitter.http.url key is missing from the properties.","commonSituations":"Typo'd property key (e.g. 'http.emit.url'); property defined in the wrong file or environment; partial config migration dropping the URL key.","solutions":["Add org.apache.druid.java.util.emitter.http.url=<recipient base URL> to runtime.properties","Check for typos in the property key (it must be exactly org.apache.druid.java.util.emitter.http.url)","Confirm the config file is loaded before calling Emitters.create"],"exampleFix":"// before\norg.apache.druid.java.util.emitter.http.recipientUrl=... // wrong key\n// after\norg.apache.druid.java.util.emitter.http.url=http://recipient:8080/druid/metrics","handlingStrategy":"validation","validationCode":"final String url = props.getProperty(\"org.apache.druid.java.util.emitter.http.url\");\nif (url == null || url.isEmpty()) {\n  throw new IllegalStateException(\"org.apache.druid.java.util.emitter.http.url must be set\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  Emitter e = Emitters.create(props);\n} catch (IllegalArgumentException ex) {\n  log.error(ex, \"Missing HTTP emitter property\");\n  throw ex;\n}","preventionTips":["Define org.apache.druid.java.util.emitter.http.url before enabling HTTP emitter features","Grep config files for 'java.util.emitter' to confirm exact key spellings","Validate required properties at startup with a fail-fast check","Keep emitter properties in a single canonical config file to avoid drift"],"tags":["configuration","missing-property","http"],"backgroundTag":"missing-required-config-field","analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}