aglinxinyuan commented on code in PR #5085:
URL: https://github.com/apache/texera/pull/5085#discussion_r3251716851


##########
common/workflow-core/src/main/scala/org/apache/texera/amber/core/storage/DocumentFactory.scala:
##########
@@ -103,6 +103,40 @@ object DocumentFactory {
     }
   }
 
+  /**
+    * Check whether a document exists at the given URI without opening it.
+    *
+    * Returns true iff the underlying storage already has an entry for this
+    * URI (e.g., an iceberg table at the resolved namespace + storage key).
+    * Useful for "create only if absent" flows that would otherwise have to
+    * call `openDocument` inside a try/catch to test existence.
+    */
+  def documentExists(uri: URI): Boolean = {
+    uri.getScheme match {
+      case VFS_FILE_URI_SCHEME =>
+        val (_, _, _, resourceType) = decodeURI(uri)
+        val storageKey = sanitizeURIPath(uri)
+
+        val namespace = resourceType match {
+          case RESULT             => StorageConfig.icebergTableResultNamespace
+          case CONSOLE_MESSAGES   => 
StorageConfig.icebergTableConsoleMessagesNamespace
+          case RUNTIME_STATISTICS => 
StorageConfig.icebergTableRuntimeStatisticsNamespace
+          case STATE              => StorageConfig.icebergTableStateNamespace
+          case _ =>
+            throw new IllegalArgumentException(s"Resource type $resourceType 
is not supported")
+        }
+
+        IcebergUtil
+          .loadTableMetadata(IcebergCatalogInstance.getInstance(), namespace, 
storageKey)
+          .isDefined
+
+      case unsupportedScheme =>
+        throw new UnsupportedOperationException(
+          s"Unsupported URI scheme: $unsupportedScheme for checking the 
document"

Review Comment:
   Updated the message to "for checking document existence". Fixed in 
`ceff249ee`.



##########
common/workflow-core/src/main/scala/org/apache/texera/amber/core/storage/DocumentFactory.scala:
##########
@@ -103,6 +103,40 @@ object DocumentFactory {
     }
   }
 
+  /**
+    * Check whether a document exists at the given URI without opening it.
+    *
+    * Returns true iff the underlying storage already has an entry for this
+    * URI (e.g., an iceberg table at the resolved namespace + storage key).
+    * Useful for "create only if absent" flows that would otherwise have to
+    * call `openDocument` inside a try/catch to test existence.
+    */
+  def documentExists(uri: URI): Boolean = {
+    uri.getScheme match {
+      case VFS_FILE_URI_SCHEME =>

Review Comment:
   Added two cases to `IcebergDocumentSpec` covering (a) `documentExists` is 
true after `createDocument` and false for a fresh URI, and (b) `documentExists` 
throws `UnsupportedOperationException` for an unsupported scheme. The 
unsupported-resource-type branch is unreachable from a well-formed VFS URI, so 
it is not exercised separately. Fixed in `ceff249ee`.



-- 
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