Skip to content

NullPtrException when POSTing a run event with partial datasource facet #1890

@xlambein

Description

@xlambein

The DatasourceDatasetFacet schema specifies two fields, both of which are (implicitly) optional. However, leaving either of these fields blank when POSTing a run event to a Marquez server results in the following kind of error:

ERROR [2022-03-02 17:02:57,555] marquez.api.OpenLineageResource: Unexpected error while processing request
! java.lang.NullPointerException: null
! at java.base/java.net.URI$Parser.parse(Unknown Source)
! at java.base/java.net.URI.<init>(Unknown Source)
! at marquez.db.OpenLineageDao.getUrlOrNull(OpenLineageDao.java:290)
! at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
! at org.jdbi.v3.core.internal.exceptions.Unchecked.lambda$function$4(Unchecked.java:76)
! at org.jdbi.v3.sqlobject.DefaultMethodHandler.invoke(DefaultMethodHandler.java:50)
! at org.jdbi.v3.sqlobject.internal.SqlObjectInitData$1.lambda$invoke$0(SqlObjectInitData.java:132)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:44)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:26)
! at org.jdbi.v3.core.LazyHandleSupplier.lambda$invokeInContext$1(LazyHandleSupplier.java:77)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:44)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:26)
! at org.jdbi.v3.core.LazyHandleSupplier.invokeInContext(LazyHandleSupplier.java:76)
! at org.jdbi.v3.sqlobject.internal.SqlObjectInitData$1.call(SqlObjectInitData.java:138)
! at org.jdbi.v3.sqlobject.internal.SqlObjectInitData$1.invoke(SqlObjectInitData.java:132)
! at org.jdbi.v3.sqlobject.SqlObjectFactory.lambda$attach$2(SqlObjectFactory.java:110)
! at com.sun.proxy.$Proxy122.getUrlOrNull(Unknown Source)
! at marquez.db.OpenLineageDao.upsertLineageDataset(OpenLineageDao.java:332)
! at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
! at org.jdbi.v3.core.internal.exceptions.Unchecked.lambda$function$4(Unchecked.java:76)
! at org.jdbi.v3.sqlobject.DefaultMethodHandler.invoke(DefaultMethodHandler.java:50)
! at org.jdbi.v3.sqlobject.internal.SqlObjectInitData$1.lambda$invoke$0(SqlObjectInitData.java:132)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:44)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:26)
! at org.jdbi.v3.core.LazyHandleSupplier.lambda$invokeInContext$1(LazyHandleSupplier.java:77)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:44)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:26)
! at org.jdbi.v3.core.LazyHandleSupplier.invokeInContext(LazyHandleSupplier.java:76)
! at org.jdbi.v3.sqlobject.internal.SqlObjectInitData$1.call(SqlObjectInitData.java:138)
! at org.jdbi.v3.sqlobject.internal.SqlObjectInitData$1.invoke(SqlObjectInitData.java:132)
! at org.jdbi.v3.sqlobject.SqlObjectFactory.lambda$attach$2(SqlObjectFactory.java:110)
! at com.sun.proxy.$Proxy122.upsertLineageDataset(Unknown Source)
! at marquez.db.OpenLineageDao.updateBaseMarquezModel(OpenLineageDao.java:222)
! at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
! at org.jdbi.v3.core.internal.exceptions.Unchecked.lambda$function$4(Unchecked.java:76)
! at org.jdbi.v3.sqlobject.DefaultMethodHandler.invoke(DefaultMethodHandler.java:50)
! at org.jdbi.v3.sqlobject.internal.SqlObjectInitData$1.lambda$invoke$0(SqlObjectInitData.java:132)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:44)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:26)
! at org.jdbi.v3.core.LazyHandleSupplier.lambda$invokeInContext$1(LazyHandleSupplier.java:77)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:44)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:26)
! at org.jdbi.v3.core.LazyHandleSupplier.invokeInContext(LazyHandleSupplier.java:76)
! at org.jdbi.v3.sqlobject.internal.SqlObjectInitData$1.call(SqlObjectInitData.java:138)
! at org.jdbi.v3.sqlobject.internal.SqlObjectInitData$1.invoke(SqlObjectInitData.java:132)
! at org.jdbi.v3.sqlobject.SqlObjectFactory.lambda$attach$2(SqlObjectFactory.java:110)
! at com.sun.proxy.$Proxy122.updateBaseMarquezModel(Unknown Source)
! at marquez.db.OpenLineageDao.updateMarquezModel(OpenLineageDao.java:73)
! at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(Unknown Source)
! at org.jdbi.v3.core.internal.exceptions.Unchecked.lambda$function$4(Unchecked.java:76)
! at org.jdbi.v3.sqlobject.DefaultMethodHandler.invoke(DefaultMethodHandler.java:50)
! at org.jdbi.v3.sqlobject.transaction.internal.TransactionDecorator.lambda$decorateHandler$3(TransactionDecorator.java:46)
! at org.jdbi.v3.core.transaction.LocalTransactionHandler$BoundLocalTransactionHandler.inTransaction(LocalTransactionHandler.java:208)
! at org.jdbi.v3.core.transaction.LocalTransactionHandler$BoundLocalTransactionHandler.inTransaction(LocalTransactionHandler.java:233)
! at org.jdbi.v3.core.Handle.inTransaction(Handle.java:505)
! at org.jdbi.v3.sqlobject.transaction.internal.TransactionDecorator.lambda$decorateHandler$4(TransactionDecorator.java:54)
! at org.jdbi.v3.sqlobject.internal.SqlObjectInitData$1.lambda$invoke$0(SqlObjectInitData.java:132)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:44)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:26)
! at org.jdbi.v3.core.LazyHandleSupplier.lambda$invokeInContext$1(LazyHandleSupplier.java:77)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:44)
! at org.jdbi.v3.core.internal.Invocations.invokeWith(Invocations.java:26)
! at org.jdbi.v3.core.LazyHandleSupplier.invokeInContext(LazyHandleSupplier.java:76)
! at org.jdbi.v3.sqlobject.internal.SqlObjectInitData$1.call(SqlObjectInitData.java:138)
! at org.jdbi.v3.sqlobject.internal.SqlObjectInitData$1.invoke(SqlObjectInitData.java:132)
! at org.jdbi.v3.sqlobject.SqlObjectFactory.lambda$attach$2(SqlObjectFactory.java:110)
! at org.jdbi.v3.core.internal.OnDemandExtensions.lambda$invoke$5(OnDemandExtensions.java:98)
! at org.jdbi.v3.core.internal.exceptions.Unchecked.lambda$function$4(Unchecked.java:76)
! at org.jdbi.v3.core.internal.OnDemandExtensions.invoke(OnDemandExtensions.java:98)
! at org.jdbi.v3.core.internal.OnDemandExtensions.lambda$createProxy$2(OnDemandExtensions.java:82)
! at org.jdbi.v3.core.Jdbi.callWithExtension(Jdbi.java:476)
! at org.jdbi.v3.core.Jdbi.withExtension(Jdbi.java:463)
! at org.jdbi.v3.core.internal.OnDemandExtensions.lambda$createProxy$3(OnDemandExtensions.java:82)
! at com.sun.proxy.$Proxy90.updateMarquezModel(Unknown Source)
! at marquez.service.DelegatingDaos$DelegatingOpenLineageDao.updateMarquezModel(DelegatingDaos.java:59)
! at marquez.service.OpenLineageService.lambda$createAsync$0(OpenLineageService.java:55)
! at marquez.tracing.SentryPropagating$SentryPropagatingSupplier.get(SentryPropagating.java:23)
! ... 7 common frames omitted
! Causing: java.util.concurrent.CompletionException: java.lang.NullPointerException
! at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(Unknown Source)
! at java.base/java.util.concurrent.CompletableFuture.completeThrowable(Unknown Source)
! at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source)
! at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(Unknown Source)
! at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
! at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
! at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
! at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
! at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
172.18.0.1 - - [02/Mar/2022:17:02:57 +0000] "POST /api/v1/lineage HTTP/1.1" 500 0 "-" "-" 32

Here is the query in question causing the error:

{
  "eventType": "START",
  "eventTime": "2022-03-02T18:09:08.621531103+01:00",
  "run": {
    "runId": "28b5c373-1eef-4845-82a6-98bba8f7541c",
    "facets": {}
  },
  "job": {
    "namespace": "my-namespace",
    "name": "a-job",
    "facets": {}
  },
  "inputs": [
    {
      "namespace": "imdb",
      "name": "movies",
      "facets": {
        "dataSource": {
          "_producer": "",
          "_schemaURL": "https://github.com/OpenLineage/OpenLineage/blob/0.5.2/spec/facets/DatasourceDatasetFacet.json",
          "name": "movies.csv"
        }
      },
      "inputFacets": {}
    }
  ],
  "outputs": [],
  "producer": "my-producer",
  "schemaUrl": "https://openlineage.io/spec/1-0-2/OpenLineage.json"
}

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions