pinpoint-apm/pinpoint · error · OracleConnectionStringException

Syntax error. Expected token='=

Error message

Syntax error. Expected token='=' :<token>

What it means

Parser guard in OracleNetConnectionDescriptorTokenizer.checkEqualToken: after reading the next token from the JDBC URL connection descriptor, it was not the singleton '=' token object — the descriptor's key=value syntax is broken at this point (e.g. a missing '=' between a keyword and its value).

Solutions

  1. Correct the Oracle JDBC URL descriptor syntax, e.g. (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)...)) — every key must be followed by '='
  2. Check for typos, stray quotes, or missing parentheses before the failing token
  3. Validate the connection string in a SQL client before configuring the agent
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at agent-module/plugins/oracle-jdbc/src/main/java/com/navercorp/pinpoint/plugin/jdbc/oracle/parser/OracleNetConnectionDescriptorTokenizer.java:198 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07). Data as JSON: /api/errors/e22c22a5cba0dc6a. Report an issue: GitHub.

Appendix: source

Thrown at agent-module/plugins/oracle-jdbc/src/main/java/com/navercorp/pinpoint/plugin/jdbc/oracle/parser/OracleNetConnectionDescriptorTokenizer.java:198

    public void checkStartToken() {
        Token token = this.nextToken();
        if (token == null) {
            throw new OracleConnectionStringException("parse error. token is null");
        }
        // We can check by == because the token object is singleton.
        if (!(token == TOKEN_KEY_START_OBJECT)) {
            throw new OracleConnectionStringException("syntax error. Expected token='(' :" + token.getToken());
        }
    }

    public void checkEqualToken() {
        Token token = this.nextToken();
        if (token == null) {
            throw new OracleConnectionStringException("parse error. token is null. Expected token='='");
        }
        // We can check by == because the token object is singleton.
        if (!(token == TOKEN_EQUAL_OBJECT)) {
            throw new OracleConnectionStringException("Syntax error. Expected token='=' :" + token.getToken());
        }
    }

    public void checkEndToken() {
        Token token = this.nextToken();
        if (token == null) {
            throw new OracleConnectionStringException("parse error. token is null. Expected token=')");
        }
        // We can check by == because the token object is singleton.
        if (!(token == TOKEN_KEY_END_OBJECT)) {
            throw new OracleConnectionStringException("Syntax error. Expected token=')' :" + token.getToken());
        }
    }

    public Token getLiteralToken() {
        Token token = this.nextToken();
        if (token == null) {
            throw new OracleConnectionStringException("parse error. token is null. Expected token='LITERAL'");

View on GitHub (pinned to 744c3d3075)