pinpoint-apm/pinpoint · warning · InvalidParameterException

Invalid order by type : not supported.

Error message

Invalid order by type :  not supported.

What it means

The Builder.setOrderby validates the orderBy string against the OrderBy enum via OrderBy.fromValue; unknown values yield null and an InvalidParameterException is thrown. Only the enumerated column names are accepted for sorting UriStat summary queries.

Solutions

  1. Pass one of the OrderBy.fromValue-recognized strings (check the OrderBy enum's accepted values).
  2. Normalize user input (case, separators) before calling setOrderby.
  3. Catch InvalidParameterException and fall back to a default ordering.

Example fix

// before
builder.setOrderby("TotalCount");
// after
builder.setOrderby("totalCount"); // value accepted by OrderBy.fromValue
Defensive patterns

Strategy: validation

Validate before calling

OrderBy o = UriStatSummaryQueryParameter.OrderBy.fromValue(orderBy);
if (o == null) orderBy = defaultOrderBy;

Try / catch

try { builder.setOrderby(orderBy); } catch (InvalidParameterException e) { builder.setOrderby(defaultOrderBy); }

Prevention

When it happens

Trigger: Builder.setOrderby("total") etc. where the string does not equal any OrderBy value (case-sensitive mismatch included).

Common situations: Clients passing sort field names from another API version; typos or camelCase vs underscore mismatches in the orderBy query parameter.

Understand the failure class

Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.

Related errors


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

Appendix: source

Thrown at uristat/uristat-web/src/main/java/com/navercorp/pinpoint/uristat/web/util/UriStatSummaryQueryParameter.java:170

            return self();
        }

        public Builder setApplicationName(String applicationName) {
            this.applicationName = StringPrecondition.requireHasLength(applicationName, "applicationName");
            return self();
        }

        public Builder setAgentId(String agentId) {
            if (StringUtils.hasLength(agentId)) {
                this.agentId = agentId;
            }
            return self();
        }

        public Builder setOrderby(String orderBy) throws InvalidParameterException {
            UriStatSummaryQueryParameter.OrderBy order = OrderBy.fromValue(orderBy);
            if (order == null) {
                throw new InvalidParameterException("Invalid order by type : " + orderBy + " not supported.");
            }
            this.orderBy = order;
            return self();
        }

        public Builder setDesc(boolean desc) {
            if (desc) {
                this.isDesc = "desc";
            } else {
                this.isDesc = "asc";
            }
            return self();
        }

        public Builder setLimit(int limit) {
            this.limit = Ints.constrainToRange(limit, 50, 200);
            return self();
        }

View on GitHub (pinned to 744c3d3075)