-
Notifications
You must be signed in to change notification settings - Fork 14
Description
I was unsure of the most appropriate place to open this issue/discussion, so hopefully I've landed close to where I should have. If I should move the conversation somewhere else, let me know.
I've been developing on the HTCondor+Snakemake executor from this repo. In particular, I'd been working to get the executor functioning in HTCondor pools where there's no shared filesystem between the HTCondor Access Point (AP) and the pool's Execution Points (EPs). I succeeded at this by having the executor explicitly manage which files are transferred with HTCondor as well as setting Snakemake's --shared-fs-usage argument to none.
Now I'm in the process of getting the executor to work in environments where the AP shares only specific filesystem paths with EPs. For example, it might be the case that only files under /foo/bar are common to both environments. For any input/output not under this path, HTCondor needs to transfer the file from AP-->EP, but the AP does not need to manually transfer files when they are under the path. For now, these shared filesystem paths should only be used for input/output, and it's assumed the Snakemake process itself is never run under one of these paths.
I put together a proof of concept that handles the partially-shared filesystem case on this branch of my fork, but it currently introduces a very awkward configuration requirement that sets shared-fs-usage: none to prevent the local Snakemake process from trying to communicate directly with the remote process, and then further sets shared-fs-prefixes: /foo/bar so that the Executor knows which files it's not responsible for explicitly transferring. Even though I can demonstrate that this works end-to-end, I can't imagine it's the way I should be thinking about the design.
Is there a better way to plumb this logic through existing Snakemake executor options? I'm aware of the –default-storage-provider option, but it's unclear to me whether I can tap into that in a way that works with the overall setup.