Skip to content

Commit d0bf768

Browse files
committed
Willy code review changes
Signed-off-by: Maciej Obuchowski <obuchowski.maciej@gmail.com>
1 parent d4a204d commit d0bf768

24 files changed

Lines changed: 197 additions & 247 deletions

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Changelog
22

33
## [Unreleased](https://github.com/MarquezProject/marquez/compare/0.25.0...HEAD)
4+
* Added new API for retrieving OpenLineage events [`#2070`](https://github.com/MarquezProject/marquez/pull/2070) [@mobuchowski](https://github.com/mobuchowski)
45

56
## [0.25.0](https://github.com/MarquezProject/marquez/compare/0.24.0...0.25.0) - 2022-08-08
67

api/src/main/java/marquez/MarquezApp.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
3939
import org.flywaydb.core.api.FlywayException;
4040
import org.jdbi.v3.core.Jdbi;
4141
import org.jdbi.v3.core.statement.SqlLogger;
42+
import org.jdbi.v3.jackson2.Jackson2Config;
43+
import org.jdbi.v3.jackson2.Jackson2Plugin;
4244
import org.jdbi.v3.postgres.PostgresPlugin;
4345
import org.jdbi.v3.sqlobject.SqlObjectPlugin;
4446

@@ -154,12 +156,14 @@ private MarquezContext buildMarquezContext(
154156
factory
155157
.build(env, config.getDataSourceFactory(), source, DB_POSTGRES)
156158
.installPlugin(new SqlObjectPlugin())
157-
.installPlugin(new PostgresPlugin());
159+
.installPlugin(new PostgresPlugin())
160+
.installPlugin(new Jackson2Plugin());
158161
SqlLogger sqlLogger = new InstrumentedSqlLogger(env.metrics());
159162
if (isSentryEnabled(config)) {
160163
sqlLogger = new TracingSQLLogger(sqlLogger);
161164
}
162165
jdbi.setSqlLogger(sqlLogger);
166+
jdbi.getConfig(Jackson2Config.class).setMapper(Utils.getMapper());
163167

164168
final MarquezContext context =
165169
MarquezContext.builder().jdbi(jdbi).tags(config.getTags()).build();

api/src/main/java/marquez/MarquezContext.java

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import lombok.Getter;
1515
import lombok.NonNull;
1616
import marquez.api.DatasetResource;
17-
import marquez.api.EventResource;
1817
import marquez.api.JobResource;
1918
import marquez.api.NamespaceResource;
2019
import marquez.api.OpenLineageResource;
@@ -26,7 +25,6 @@
2625
import marquez.db.DatasetDao;
2726
import marquez.db.DatasetFieldDao;
2827
import marquez.db.DatasetVersionDao;
29-
import marquez.db.EventDao;
3028
import marquez.db.JobContextDao;
3129
import marquez.db.JobDao;
3230
import marquez.db.JobVersionDao;
@@ -44,7 +42,6 @@
4442
import marquez.service.DatasetFieldService;
4543
import marquez.service.DatasetService;
4644
import marquez.service.DatasetVersionService;
47-
import marquez.service.EventService;
4845
import marquez.service.JobService;
4946
import marquez.service.LineageService;
5047
import marquez.service.NamespaceService;
@@ -74,8 +71,6 @@ public final class MarquezContext {
7471
@Getter private final OpenLineageDao openLineageDao;
7572
@Getter private final LineageDao lineageDao;
7673
@Getter private final SearchDao searchDao;
77-
@Getter private final EventDao eventDao;
78-
7974
@Getter private final List<RunTransitionListener> runTransitionListeners;
8075

8176
@Getter private final NamespaceService namespaceService;
@@ -86,17 +81,13 @@ public final class MarquezContext {
8681
@Getter private final RunService runService;
8782
@Getter private final OpenLineageService openLineageService;
8883
@Getter private final LineageService lineageService;
89-
@Getter private final EventService eventService;
90-
9184
@Getter private final NamespaceResource namespaceResource;
9285
@Getter private final SourceResource sourceResource;
9386
@Getter private final DatasetResource datasetResource;
9487
@Getter private final JobResource jobResource;
9588
@Getter private final TagResource tagResource;
9689
@Getter private final OpenLineageResource openLineageResource;
9790
@Getter private final SearchResource searchResource;
98-
@Getter private final EventResource eventResource;
99-
10091
@Getter private final ImmutableList<Object> resources;
10192
@Getter private final JdbiExceptionExceptionMapper jdbiException;
10293
@Getter private final GraphQLHttpServlet graphqlServlet;
@@ -125,7 +116,6 @@ private MarquezContext(
125116
this.openLineageDao = jdbi.onDemand(OpenLineageDao.class);
126117
this.lineageDao = jdbi.onDemand(LineageDao.class);
127118
this.searchDao = jdbi.onDemand(SearchDao.class);
128-
this.eventDao = jdbi.onDemand(EventDao.class);
129119
this.runTransitionListeners = runTransitionListeners;
130120

131121
this.namespaceService = new NamespaceService(baseDao);
@@ -138,7 +128,6 @@ private MarquezContext(
138128
this.tagService.init(tags);
139129
this.openLineageService = new OpenLineageService(baseDao, runService);
140130
this.lineageService = new LineageService(lineageDao, jobDao);
141-
this.eventService = new EventService(baseDao);
142131
this.jdbiException = new JdbiExceptionExceptionMapper();
143132
final ServiceFactory serviceFactory =
144133
ServiceFactory.builder()
@@ -152,16 +141,14 @@ private MarquezContext(
152141
.lineageService(lineageService)
153142
.datasetFieldService(new DatasetFieldService(baseDao))
154143
.datasetVersionService(new DatasetVersionService(baseDao))
155-
.eventService(eventService)
156144
.build();
157145
this.namespaceResource = new NamespaceResource(serviceFactory);
158146
this.sourceResource = new SourceResource(serviceFactory);
159147
this.datasetResource = new DatasetResource(serviceFactory);
160148
this.jobResource = new JobResource(serviceFactory, jobVersionDao);
161149
this.tagResource = new TagResource(serviceFactory);
162-
this.openLineageResource = new OpenLineageResource(serviceFactory);
150+
this.openLineageResource = new OpenLineageResource(serviceFactory, openLineageDao);
163151
this.searchResource = new SearchResource(searchDao);
164-
this.eventResource = new EventResource(serviceFactory);
165152

166153
this.resources =
167154
ImmutableList.of(
@@ -172,8 +159,7 @@ private MarquezContext(
172159
tagResource,
173160
jdbiException,
174161
openLineageResource,
175-
searchResource,
176-
eventResource);
162+
searchResource);
177163

178164
final MarquezGraphqlServletBuilder servlet = new MarquezGraphqlServletBuilder();
179165
this.graphqlServlet = servlet.getServlet(new GraphqlSchemaBuilder(jdbi));

api/src/main/java/marquez/api/BaseResource.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import marquez.service.DatasetFieldService;
2929
import marquez.service.DatasetService;
3030
import marquez.service.DatasetVersionService;
31-
import marquez.service.EventService;
3231
import marquez.service.JobService;
3332
import marquez.service.LineageService;
3433
import marquez.service.NamespaceService;
@@ -51,7 +50,6 @@ public class BaseResource {
5150
protected DatasetVersionService datasetVersionService;
5251
protected DatasetFieldService datasetFieldService;
5352
protected LineageService lineageService;
54-
protected EventService eventService;
5553

5654
public BaseResource(ServiceFactory serviceFactory) {
5755
this.serviceFactory = serviceFactory;
@@ -65,7 +63,6 @@ public BaseResource(ServiceFactory serviceFactory) {
6563
this.datasetVersionService = serviceFactory.getDatasetVersionService();
6664
this.datasetFieldService = serviceFactory.getDatasetFieldService();
6765
this.lineageService = serviceFactory.getLineageService();
68-
this.eventService = serviceFactory.getEventService();
6966
}
7067

7168
void throwIfNotExists(@NonNull NamespaceName namespaceName) {

api/src/main/java/marquez/api/EventResource.java

Lines changed: 0 additions & 62 deletions
This file was deleted.

api/src/main/java/marquez/api/OpenLineageResource.java

Lines changed: 54 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,35 +12,45 @@
1212
import com.codahale.metrics.annotation.ExceptionMetered;
1313
import com.codahale.metrics.annotation.ResponseMetered;
1414
import com.codahale.metrics.annotation.Timed;
15+
import com.fasterxml.jackson.annotation.JsonProperty;
1516
import com.fasterxml.jackson.core.JsonProcessingException;
17+
import io.dropwizard.jersey.jsr310.ZonedDateTimeParam;
1618
import java.sql.SQLException;
19+
import java.util.List;
1720
import java.util.concurrent.CompletionException;
18-
import java.util.concurrent.ExecutionException;
1921
import javax.validation.Valid;
22+
import javax.validation.constraints.Min;
2023
import javax.validation.constraints.NotNull;
2124
import javax.ws.rs.Consumes;
2225
import javax.ws.rs.DefaultValue;
2326
import javax.ws.rs.GET;
2427
import javax.ws.rs.POST;
2528
import javax.ws.rs.Path;
29+
import javax.ws.rs.PathParam;
2630
import javax.ws.rs.Produces;
2731
import javax.ws.rs.QueryParam;
2832
import javax.ws.rs.container.AsyncResponse;
2933
import javax.ws.rs.container.Suspended;
3034
import javax.ws.rs.core.Response;
3135
import lombok.NonNull;
36+
import lombok.Value;
3237
import lombok.extern.slf4j.Slf4j;
38+
import marquez.db.OpenLineageDao;
3339
import marquez.service.ServiceFactory;
3440
import marquez.service.models.LineageEvent;
3541
import marquez.service.models.NodeId;
3642

3743
@Slf4j
38-
@Path("/api/v1/lineage")
44+
@Path("/api/v1")
3945
public class OpenLineageResource extends BaseResource {
4046
private static final String DEFAULT_DEPTH = "20";
4147

42-
public OpenLineageResource(@NonNull final ServiceFactory serviceFactory) {
48+
private final OpenLineageDao openLineageDao;
49+
50+
public OpenLineageResource(
51+
@NonNull final ServiceFactory serviceFactory, @NonNull final OpenLineageDao openLineageDao) {
4352
super(serviceFactory);
53+
this.openLineageDao = openLineageDao;
4454
}
4555

4656
@Timed
@@ -49,6 +59,7 @@ public OpenLineageResource(@NonNull final ServiceFactory serviceFactory) {
4959
@POST
5060
@Consumes(APPLICATION_JSON)
5161
@Produces(APPLICATION_JSON)
62+
@Path("/lineage")
5263
public void create(
5364
@Valid @NotNull LineageEvent event, @Suspended final AsyncResponse asyncResponse)
5465
throws JsonProcessingException, SQLException {
@@ -80,10 +91,48 @@ private int determineStatusCode(Throwable e) {
8091
@GET
8192
@Consumes(APPLICATION_JSON)
8293
@Produces(APPLICATION_JSON)
94+
@Path("/lineage")
8395
public Response getLineage(
8496
@QueryParam("nodeId") @NotNull NodeId nodeId,
85-
@QueryParam("depth") @DefaultValue(DEFAULT_DEPTH) int depth)
86-
throws ExecutionException, InterruptedException {
97+
@QueryParam("depth") @DefaultValue(DEFAULT_DEPTH) int depth) {
8798
return Response.ok(lineageService.lineage(nodeId, depth)).build();
8899
}
100+
101+
@Timed
102+
@ResponseMetered
103+
@ExceptionMetered
104+
@GET
105+
@Path("/events/lineage")
106+
@Produces(APPLICATION_JSON)
107+
public Response getLineageEvents(
108+
@QueryParam("before") @DefaultValue("2030-01-01T00:00:00+00:00") ZonedDateTimeParam before,
109+
@QueryParam("after") @DefaultValue("1970-01-01T00:00:00+00:00") ZonedDateTimeParam after,
110+
@QueryParam("limit") @DefaultValue("100") @Min(value = 0) int limit) {
111+
final List<LineageEvent> events =
112+
openLineageDao.getAllLineageEvents(before.get(), after.get(), limit);
113+
return Response.ok(new Events(events)).build();
114+
}
115+
116+
@Timed
117+
@ResponseMetered
118+
@ExceptionMetered
119+
@GET
120+
@Path("/namespace/{namespace}/events/lineage")
121+
@Produces(APPLICATION_JSON)
122+
public Response getLineageEventsByNamespace(
123+
@PathParam("namespace") String namespace,
124+
@QueryParam("before") @DefaultValue("2030-01-01T00:00:00+00:00") ZonedDateTimeParam before,
125+
@QueryParam("after") @DefaultValue("1970-01-01T00:00:00+00:00") ZonedDateTimeParam after,
126+
@QueryParam("limit") @DefaultValue("100") @Min(value = 0) int limit) {
127+
final List<LineageEvent> event =
128+
openLineageDao.getLineageEventsByNamespace(namespace, before.get(), after.get(), limit);
129+
return Response.ok(new Events(event)).build();
130+
}
131+
132+
@Value
133+
static class Events {
134+
@NonNull
135+
@JsonProperty("events")
136+
List<LineageEvent> value;
137+
}
89138
}

api/src/main/java/marquez/db/BaseDao.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,4 @@ public interface BaseDao extends SqlObject {
5050

5151
@CreateSqlObject
5252
OpenLineageDao createOpenLineageDao();
53-
54-
@CreateSqlObject
55-
EventDao createEventDao();
5653
}

api/src/main/java/marquez/db/EventDao.java

Lines changed: 0 additions & 37 deletions
This file was deleted.

0 commit comments

Comments
 (0)