From 3f61ab9a49e6e8dc17fb72fdaa6c23604c13fc17 Mon Sep 17 00:00:00 2001 From: Xuan Gu <162244362+xuang7@users.noreply.github.com> Date: Sun, 8 Feb 2026 14:19:31 -0800 Subject: [PATCH 1/2] update --- .../service/resource/DatasetResource.scala | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/file-service/src/main/scala/org/apache/texera/service/resource/DatasetResource.scala b/file-service/src/main/scala/org/apache/texera/service/resource/DatasetResource.scala index a60bc07adff..93a3b7eafcf 100644 --- a/file-service/src/main/scala/org/apache/texera/service/resource/DatasetResource.scala +++ b/file-service/src/main/scala/org/apache/texera/service/resource/DatasetResource.scala @@ -19,6 +19,7 @@ package org.apache.texera.service.resource +import com.typesafe.scalalogging.LazyLogging import io.dropwizard.auth.Auth import jakarta.annotation.security.RolesAllowed import jakarta.ws.rs._ @@ -219,7 +220,7 @@ object DatasetResource { @Produces(Array(MediaType.APPLICATION_JSON, "image/jpeg", "application/pdf")) @Path("/dataset") -class DatasetResource { +class DatasetResource extends LazyLogging { private val ERR_USER_HAS_NO_ACCESS_TO_DATASET_MESSAGE = "User has no access to this dataset" private val ERR_DATASET_VERSION_NOT_FOUND_MESSAGE = "The version of the dataset not found" private val EXPIRATION_MINUTES = 5 @@ -2030,21 +2031,6 @@ class DatasetResource { } val physicalAddr = Option(session.getPhysicalAddress).map(_.trim).getOrElse("") - if (physicalAddr.isEmpty) { - throw new WebApplicationException( - "Upload session is missing physicalAddress. Restart the upload.", - Response.Status.INTERNAL_SERVER_ERROR - ) - } - - withLakeFSErrorHandling { - LakeFSStorageClient.abortPresignedMultipartUploads( - dataset.getRepositoryName, - filePath, - session.getUploadId, - physicalAddr - ) - } // Delete session; parts removed via ON DELETE CASCADE ctx @@ -2057,6 +2043,24 @@ class DatasetResource { ) .execute() + try { + withLakeFSErrorHandling { + LakeFSStorageClient.abortPresignedMultipartUploads( + dataset.getRepositoryName, + filePath, + session.getUploadId, + physicalAddr + ) + } + } catch { + case _: WebApplicationException => () // logged by withLakeFSErrorHandling + case e: Throwable => + logger.warn( + s"LakeFS abort failed for uploadId=${session.getUploadId}: ${e.getMessage}", + e + ) + } + Response.ok(Map("message" -> "Multipart upload aborted successfully")).build() } } From f42927ce51999a676a3e8a0dd5ede254c3f2d48b Mon Sep 17 00:00:00 2001 From: Xuan Gu <162244362+xuang7@users.noreply.github.com> Date: Sun, 8 Feb 2026 20:35:52 -0800 Subject: [PATCH 2/2] update. --- .../service/resource/DatasetResource.scala | 29 +++++-------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/file-service/src/main/scala/org/apache/texera/service/resource/DatasetResource.scala b/file-service/src/main/scala/org/apache/texera/service/resource/DatasetResource.scala index 93a3b7eafcf..ad5f2247204 100644 --- a/file-service/src/main/scala/org/apache/texera/service/resource/DatasetResource.scala +++ b/file-service/src/main/scala/org/apache/texera/service/resource/DatasetResource.scala @@ -19,7 +19,6 @@ package org.apache.texera.service.resource -import com.typesafe.scalalogging.LazyLogging import io.dropwizard.auth.Auth import jakarta.annotation.security.RolesAllowed import jakarta.ws.rs._ @@ -220,7 +219,7 @@ object DatasetResource { @Produces(Array(MediaType.APPLICATION_JSON, "image/jpeg", "application/pdf")) @Path("/dataset") -class DatasetResource extends LazyLogging { +class DatasetResource { private val ERR_USER_HAS_NO_ACCESS_TO_DATASET_MESSAGE = "User has no access to this dataset" private val ERR_DATASET_VERSION_NOT_FOUND_MESSAGE = "The version of the dataset not found" private val EXPIRATION_MINUTES = 5 @@ -1995,7 +1994,7 @@ class DatasetResource extends LazyLogging { URLDecoder.decode(encodedFilePath, StandardCharsets.UTF_8.name()) ) - withTransaction(context) { ctx => + val (repoName, uploadId, physicalAddr) = withTransaction(context) { ctx => if (!userHasWriteAccess(ctx, did, uid)) { throw new ForbiddenException(ERR_USER_HAS_NO_ACCESS_TO_DATASET_MESSAGE) } @@ -2043,26 +2042,14 @@ class DatasetResource extends LazyLogging { ) .execute() - try { - withLakeFSErrorHandling { - LakeFSStorageClient.abortPresignedMultipartUploads( - dataset.getRepositoryName, - filePath, - session.getUploadId, - physicalAddr - ) - } - } catch { - case _: WebApplicationException => () // logged by withLakeFSErrorHandling - case e: Throwable => - logger.warn( - s"LakeFS abort failed for uploadId=${session.getUploadId}: ${e.getMessage}", - e - ) - } + (dataset.getRepositoryName, session.getUploadId, physicalAddr) + } - Response.ok(Map("message" -> "Multipart upload aborted successfully")).build() + withLakeFSErrorHandling { + LakeFSStorageClient.abortPresignedMultipartUploads(repoName, filePath, uploadId, physicalAddr) } + + Response.ok(Map("message" -> "Multipart upload aborted successfully")).build() } /**