diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cca024..4df4baa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm # Changelog for org.gcube.data-access.sh-fuse-integration +## [v1.1.1] 2021-01-15 + +### Fixes + +- issue on right displayed +- https://support.d4science.org/issues/20417 + ## [v1.1.0] 2020-09-07 ### Fixes diff --git a/pom.xml b/pom.xml index f397593..6b4cd84 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 org.gcube.data-access sh-fuse-integration - 1.1.0 + 1.1.1 SHFuseIntegration diff --git a/src/main/java/org/gcube/data/access/storagehub/fs/FileDownload.java b/src/main/java/org/gcube/data/access/storagehub/fs/FileDownload.java index c4bbde8..c7db281 100644 --- a/src/main/java/org/gcube/data/access/storagehub/fs/FileDownload.java +++ b/src/main/java/org/gcube/data/access/storagehub/fs/FileDownload.java @@ -34,11 +34,15 @@ public class FileDownload implements SHFile{ while ((read=bi.read(buf))!=-1) { fo.write(buf, 0, read); } + fo.flush(); } + fileItem = fileContainer.get(); logger.trace("FILE-DOWNLOAD with {} , {}", fileItem.getName(), fileItem.getContent().getSize()); + logger.trace("output name is {} ans length {}", output.getAbsolutePath(),output.length()); + } @@ -51,6 +55,7 @@ public class FileDownload implements SHFile{ int readTotal= 0; try { raf = new RandomAccessFile(output, "r"); + raf.seek(offset); int read =0; logger.trace("{} BEFORE: bytes to read {} and read total {} and last read {}", fileItem.getName(), bytesToRead, readTotal, read); while ((read= raf.read(mybuf, 0 , bytesToRead-readTotal))!=-1 && bytesToRead>readTotal) { diff --git a/src/main/java/org/gcube/data/access/storagehub/fs/PathUtils.java b/src/main/java/org/gcube/data/access/storagehub/fs/PathUtils.java index 2882614..9b669e8 100644 --- a/src/main/java/org/gcube/data/access/storagehub/fs/PathUtils.java +++ b/src/main/java/org/gcube/data/access/storagehub/fs/PathUtils.java @@ -1,6 +1,5 @@ package org.gcube.data.access.storagehub.fs; -import java.awt.Container; import java.nio.file.Paths; import java.util.List; diff --git a/src/main/java/org/gcube/data/access/storagehub/fs/StorageHubFS.java b/src/main/java/org/gcube/data/access/storagehub/fs/StorageHubFS.java index 18ca3e5..453f427 100644 --- a/src/main/java/org/gcube/data/access/storagehub/fs/StorageHubFS.java +++ b/src/main/java/org/gcube/data/access/storagehub/fs/StorageHubFS.java @@ -1,19 +1,16 @@ package org.gcube.data.access.storagehub.fs; -import java.io.RandomAccessFile; import java.nio.file.Paths; import java.util.HashMap; import java.util.List; import java.util.Map.Entry; import java.util.Objects; -import java.util.Random; import java.util.concurrent.TimeUnit; import org.cache2k.Cache; import org.cache2k.Cache2kBuilder; import org.gcube.common.authorization.library.AuthorizedTasks; import org.gcube.common.authorization.library.provider.SecurityTokenProvider; -import org.gcube.common.gxrest.response.outbound.ErrorCode; import org.gcube.common.scope.api.ScopeProvider; import org.gcube.common.storagehub.client.dsl.ContainerType; import org.gcube.common.storagehub.client.dsl.FileContainer; @@ -212,11 +209,8 @@ public class StorageHubFS extends FuseStubFS { private void setCommonAttributes(Item item, FileStat stat, int type) { - if (item.isShared()) { - stat.st_mode.set(type | FileStat.S_IROTH); - }else { - stat.st_mode.set(type | 0777); - } + + stat.st_mode.set(type | 0777); stat.st_mtim.tv_sec.set(item.getLastModificationTime().toInstant().getEpochSecond()); stat.st_mtim.tv_nsec.set(item.getLastModificationTime().toInstant().getNano()); stat.st_ctim.tv_sec.set(item.getLastModificationTime().toInstant().getEpochSecond()); @@ -258,7 +252,7 @@ public class StorageHubFS extends FuseStubFS { * @see ru.serce.jnrfuse.FuseStubFS#write(java.lang.String, jnr.ffi.Pointer, long, long, ru.serce.jnrfuse.struct.FuseFileInfo) */ @Override - public int read(String path, Pointer buf, @size_t long size, @off_t long offset, FuseFileInfo fi) { + public synchronized int read(String path, Pointer buf, @size_t long size, @off_t long offset, FuseFileInfo fi) { ScopeProvider.instance.set(scope); SecurityTokenProvider.instance.set(token); @@ -289,7 +283,7 @@ public class StorageHubFS extends FuseStubFS { synchronized (tempFiles) { if (tempFiles.containsKey(path) && tempFiles.get(path) instanceof FileDownload) { - logger.trace("path {} found in tmpFiles"); + logger.trace("path {} found in tmpFiles", path); fileDownload = tempFiles.get(path); } else { ItemContainer item = pathUtils.getPath(path); @@ -379,7 +373,7 @@ public class StorageHubFS extends FuseStubFS { cache.put(path+name, (ItemContainer) child); }catch (Exception e) { - logger.error("error riding children ",e); + logger.error("error reading children ",e); } } diff --git a/src/test/java/org/gcube/data/access/storagehub/fuse/FuseTest.java b/src/test/java/org/gcube/data/access/storagehub/fuse/FuseTest.java index a9a6136..d4e1a93 100644 --- a/src/test/java/org/gcube/data/access/storagehub/fuse/FuseTest.java +++ b/src/test/java/org/gcube/data/access/storagehub/fuse/FuseTest.java @@ -16,6 +16,7 @@ public class FuseTest { String path; switch (Platform.getNativePlatform().getOS()) { case WINDOWS: + System.out.println("Im here"); path = "J:\\"; break; default: