apache/gravitino

[Improvement] Possible NPE in SchemaOperations#createSchema

Open

#10,164 opened on Mar 3, 2026

View on GitHub
 (2 comments) (0 reactions) (1 assignee)Java (887 forks)auto 404
good first issueimprovement

Repository metrics

Stars
 (3,058 stars)
PR merge metrics
 (PR metrics pending)

Description

What would you like to be improved?

SchemaOperations#createSchema logs request.getName() before entering its try/catch. If request is null (for example, empty/missing POST body), this causes an immediate NullPointerException outside the error-handling path. Result: inconsistent 500 behavior.

How should we improve?

Move all request field access behind a null-safe check inside the try path, and fail fast with a controlled validation error when request == null (for example, treat as bad request). Also, make the catch path null-safe (don’t call request.getName() unless request is non-null). Add/keep a unit test for null request input to ensure the endpoint never throws uncaught exceptions.

Here's a unit test to help:

  @Test
  public void testCreateSchemaWithNullRequestShouldNotThrow() {
    SchemaOperations operations = new SchemaOperations(dispatcher);
    Assertions.assertDoesNotThrow(() -> operations.createSchema(metalake, catalog, null));
  }

Contributor guide