dimas-b commented on code in PR #4826:
URL: https://github.com/apache/polaris/pull/4826#discussion_r3506831579


##########
polaris-core/src/main/java/org/apache/polaris/core/lineage/LineagePersistence.java:
##########
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.polaris.core.lineage;
+
+import java.time.Instant;
+import java.util.List;
+import org.apache.polaris.core.context.RealmContext;
+
+/**
+ * Persistence SPI for lineage storage backends.
+ *
+ * <p>This contract is expressed in terms of Polaris's local lineage graph 
rather than raw
+ * OpenLineage run events. The service layer owns event parsing, forwarding, 
authorization, and
+ * dataset resolution. Persistence backends persist dataset nodes, dataset 
edges, and column edges,
+ * and load normalized lineage graphs.
+ */
+public interface LineagePersistence {
+
+  /**
+   * Persists dataset nodes in {@code lineage_datasets}.
+   *
+   * <p>Implementations should treat dataset {@code (realm, namespace, name)} 
values as unique. If a
+   * dataset already exists, implementations should update mutable metadata 
such as optional linkage
+   * to a Polaris-managed entity.
+   */
+  void upsertDatasets(RealmContext realmContext, List<LineageDataset> 
datasets);

Review Comment:
   It looks like `LineagePersistence` is called from request-scoped beans only. 
So, it should be possible to make its implementations request-scoped too and 
inject `RealmContext` via constructors.
   
   If implementations need to keep global state, they can do so by delegating 
these API calls to another (non-exposed) bean, which then could be 
application-scoped and deal with `RealmContext` explicitly.
   
   The benefit is that common callers of `LineagePersistence` can be simpler. 
They do not need to deal with `RealmContext` in their main code paths.
   
   WDYT?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to