{"record":{"id":"02b10bb674cb274b","repo":"eclipse-vertx/vert.x","slug":"e","errorCode":null,"errorMessage":"${e}","messagePattern":"\\$\\{e\\}","errorType":"exception","errorClass":"VertxException","httpStatus":null,"severity":"error","filePath":"vertx-core/src/main/java/io/vertx/core/parsetools/impl/JsonParserImpl.java","lineNumber":63,"sourceCode":"  private boolean objectValueMode;\n  private boolean arrayValueMode;\n  private Handler<Throwable> exceptionHandler;\n  private String currentField;\n  private Handler<Void> endHandler;\n  private long demand = Long.MAX_VALUE;\n  private boolean ended;\n  private final ReadStream<Buffer> stream;\n  private boolean emitting;\n  private final Deque<JsonEventImpl> pending = new ArrayDeque<>();\n  private List<IOException> collectedExceptions;\n\n  public JsonParserImpl(ReadStream<Buffer> stream) {\n    this.stream = stream;\n    JsonFactory factory = new JsonFactory();\n    try {\n      parser = (NonBlockingJsonParser) factory.createNonBlockingByteArrayParser();\n    } catch (Exception e) {\n      throw new VertxException(e);\n    }\n  }\n\n  @Override\n  public JsonParser pause() {\n    demand = 0L;\n    return this;\n  }\n\n  @Override\n  public JsonParser resume() {\n    return fetch(Long.MAX_VALUE);\n  }\n\n  @Override\n  public JsonParser fetch(long amount) {\n    Arguments.require(amount > 0L, \"Fetch amount must be > 0L\");\n    demand += amount;","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/eclipse-vertx/vert.x/blob/fb308bd8c3f12c79f4ae89bef67fadf6c80d036e/vertx-core/src/main/java/io/vertx/core/parsetools/impl/JsonParserImpl.java#L45-L81","documentation":"JsonParserImpl's constructor creates a Jackson non-blocking byte-array parser. If Jackson cannot instantiate that parser, the constructor wraps the cause in a generic VertxException with message = the exception's toString. This is an infrastructure/init failure, not a JSON content failure.","triggerScenarios":"Constructing JsonParser (via JsonParser.newParser(...) or newParser(stream)) when Jackson's JsonFactory fails to create the non-blocking parser — e.g. an incompatible jackson-core version on the classpath.","commonSituations":"Dependency conflicts where an old jackson-core lacks createNonBlockingByteArrayParser (introduced in Jackson 2.9); shaded/classloader issues in application servers; mixed Jackson versions in a fat jar.","solutions":["Check the exception cause (VertxException.getCause()) to confirm the Jackson failure","Ensure jackson-core >= 2.9 is on the classpath and not overridden by an older transitive version","Run mvn dependency:tree (or equivalent) and exclude/pin conflicting Jackson versions"],"exampleFix":"// before (pom.xml)\n<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.8.11</version></dependency>\n// after\n<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.15.3</version></dependency>","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"JsonParser parser;\ntry {\n  parser = JsonParser.newParser(stream);\n} catch (VertxException e) {\n  throw new IllegalStateException(\"Failed to init JSON parser (check jackson-core version >= 2.9)\", e);\n}","preventionTips":["Pin jackson-core to a Vert.x-compatible version (>= 2.9)","Check dependency tree for conflicting Jackson versions","Smoke-test parser construction at startup, not on first request"],"tags":["vertx","json-parser","jackson","initialization"],"backgroundTag":"module-init-failed","analyzedSha":"fb308bd8c3f12c79f4ae89bef67fadf6c80d036e","analyzedAt":"2026-09-06T11:37:12.241Z","contentChangedAt":"2026-09-06T11:37:12.241Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}