Add Seqera NIO filesystem for datasets and refactor TowerClient/TowerObserver#6946
Add Seqera NIO filesystem for datasets and refactor TowerClient/TowerObserver#6946bentsherman merged 1 commit intomasterfrom
Conversation
✅ Deploy Preview for nextflow-docs-staging canceled.
|
|
Some comments about current implementation:
|
|
Updated to the latest changes in master. Ready for review. It is implemented as read-only FS
|
|
Pulling @jordeu to be sure this is aligned with Fusion |
|
@jorgee can you write a small ADR describing the seqera filesystem hierarchy? that way we can make sure Fusion and Nextflow are aligned more easily |
This comment was marked as outdated.
This comment was marked as outdated.
pditommaso
left a comment
There was a problem hiding this comment.
It looks like a great progress. I left a bunch of minor notes.
I'll post also a few ones reported by Claude worth reviewing or just documenting as the first one (in the following comment)
pditommaso
left a comment
There was a problem hiding this comment.
Review of the Seqera NIO filesystem and TowerClient/Observer refactor. 8 inline comments — 1 critical, 6 important, 1 suggestion.
|
Addressed all the comments, except one, which implies a refactor on |
|
@jorgee can you fix the DCO ? |
|
DCO failure is in a @pditommaso commit. |
|
@jorgee can you just squash the PR to a single commit and rebase? |
93fd702 to
2937bd0
Compare
Signed-off-by: jorgee <jorge.ejarque@seqera.io>
2937bd0 to
2a80cbe
Compare
Done |
Summary
seqera://NIOFileSystemProviderinnf-tower, enabling Nextflow pipelines to reference Seqera Platform datasets as standard file paths (e.g.seqera://org/workspace/datasets/name)@versionpinning)TowerClientinto two classes:TowerClient(pure HTTP API client) andTowerObserver(workflow telemetry viaTraceObserverV2), so the API client can be reused by the new filesystem without pulling in observer lifecycle. This is done to allow using the FS without requiring to create an observer.TowerCommonApiintoTowerClient, which is now the natural home for shared API methodsMETA-INF/services/java.nio.file.spi.FileSystemProviderNew files
TowerObserverTraceObserverV2implementation (task events, heartbeats, workflow lifecycle) formerly inTowerClientdataset/SeqeraDatasetClientfs/SeqeraPathPathimplementation with 0–4 depth hierarchyfs/SeqeraFileSystemFileSystemwith lazy org/workspace/dataset cachesfs/SeqeraFileSystemProviderFileSystemProviderSPI: read, write, list, attributes, copyfs/SeqeraFileAttributesBasicFileAttributesbacked by dataset metadatafs/SeqeraPathFactoryPathFactoryintegrationfs/ResourceTypeHandler,fs/DatasetsResourceHandlerfs/DatasetInputStream,fs/DatasetOutputStreamexception/ForbiddenException,exception/NotFoundExceptionChanges to existing files
TowerClientsendApiRequest()+ GET support inmakeRequest(). AbsorbedTowerCommonApimethods.TowerCommonApi(deleted)TowerClientTowerFactoryTowerObserverandTowerClientseparately.client()now also activates whenaccessTokenis present, soseqera://paths work withouttower.enabledTowerPluginSeqeraPathFactoryBaseCommandImpl,AuthCommandImpl,LaunchCommandImplTowerClientAPITowerClientTestfor API client,TowerObserverTestfor observer; new tests for allfs/anddataset/classesTest plan
SeqeraPathTest— path parsing, URI round-trips, relativize/resolve,getFileName,asUriSeqeraFileSystemTest— cache loading, workspace/dataset resolution, thread safetySeqeraFileSystemProviderTest— newInputStream (latest + pinned version), readAttributes, newDirectoryStream, error propagationSeqeraDatasetClientTest— API URL construction, response mapping, error handlingTowerObserverTest— extracted observer logic works identicallyTowerClientTest— API client methods after refactor