This is an automated email from the ASF dual-hosted git repository.
yasithdev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata.git
The following commit(s) were added to refs/heads/master by this push:
new 2a034e79c8 fix(storage-service): delete files over SFTP instead of
shell rm (#654)
2a034e79c8 is described below
commit 2a034e79c83ec683bfe12f7e4886525f44d27615
Author: Yasith Jayawardana <[email protected]>
AuthorDate: Tue Jun 9 02:27:40 2026 -0400
fix(storage-service): delete files over SFTP instead of shell rm (#654)
UserStorageService.deleteFile ran "rm -f <path>" via adaptor.executeCommand,
but the SFTP storage adaptor does not support command execution, so every
file
delete failed with "Command execution not supported on storage resources".
Add a deleteFile to the storage adaptor (SFTP rm) and call it, mirroring how
deleteDir already uses deleteDirectory (SFTP rmdir).
Validated live: uploading then deleting a file now succeeds (the file is
gone).
---
.../org/apache/airavata/compute/util/SSHJStorageAdaptor.java | 9 +++++++++
.../org/apache/airavata/interfaces/StorageResourceAdaptor.java | 2 ++
.../org/apache/airavata/storage/grpc/UserStorageGrpcService.java | 2 +-
3 files changed, 12 insertions(+), 1 deletion(-)
diff --git
a/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/util/SSHJStorageAdaptor.java
b/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/util/SSHJStorageAdaptor.java
index 1582e915e7..b2fe0bc6df 100644
---
a/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/util/SSHJStorageAdaptor.java
+++
b/airavata-api/compute-service/src/main/java/org/apache/airavata/compute/util/SSHJStorageAdaptor.java
@@ -194,6 +194,15 @@ public class SSHJStorageAdaptor implements
StorageResourceAdaptor {
}
}
+ @Override
+ public void deleteFile(String path) throws AgentException {
+ try (SFTPClient sftp = openSftp()) {
+ sftp.rm(path);
+ } catch (Exception e) {
+ throw new AgentException("Failed to delete file: " + path, e);
+ }
+ }
+
@Override
public void uploadFile(String localFile, String remoteFile) throws
AgentException {
try (SFTPClient sftp = openSftp()) {
diff --git
a/airavata-api/src/main/java/org/apache/airavata/interfaces/StorageResourceAdaptor.java
b/airavata-api/src/main/java/org/apache/airavata/interfaces/StorageResourceAdaptor.java
index bbc90773ae..c5805d11af 100644
---
a/airavata-api/src/main/java/org/apache/airavata/interfaces/StorageResourceAdaptor.java
+++
b/airavata-api/src/main/java/org/apache/airavata/interfaces/StorageResourceAdaptor.java
@@ -43,6 +43,8 @@ public interface StorageResourceAdaptor extends AgentAdaptor {
public void deleteDirectory(String path) throws AgentException;
+ public void deleteFile(String path) throws AgentException;
+
public List<String> listDirectory(String path) throws AgentException;
public Boolean doesFileExist(String filePath) throws AgentException;
diff --git
a/airavata-api/storage-service/src/main/java/org/apache/airavata/storage/grpc/UserStorageGrpcService.java
b/airavata-api/storage-service/src/main/java/org/apache/airavata/storage/grpc/UserStorageGrpcService.java
index d2d06486c5..9c73d3d4de 100644
---
a/airavata-api/storage-service/src/main/java/org/apache/airavata/storage/grpc/UserStorageGrpcService.java
+++
b/airavata-api/storage-service/src/main/java/org/apache/airavata/storage/grpc/UserStorageGrpcService.java
@@ -276,7 +276,7 @@ public class UserStorageGrpcService extends
UserStorageServiceGrpc.UserStorageSe
try {
StorageResourceAdaptor adaptor =
getStorageAdaptor(request.getStorageResourceId());
String path = resolvePath(request.getPath(),
request.getStorageResourceId());
- adaptor.executeCommand("rm -f " + path, "/");
+ adaptor.deleteFile(path);
observer.onNext(Empty.getDefaultInstance());
observer.onCompleted();
} catch (Exception e) {