[ https://issues.apache.org/jira/browse/DRILL-8359?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17647872#comment-17647872 ]
ASF GitHub Bot commented on DRILL-8359: --------------------------------------- jnturton commented on code in PR #2713: URL: https://github.com/apache/drill/pull/2713#discussion_r1049256392 ########## exec/java-exec/src/main/java/org/apache/drill/exec/store/dfs/FileSystemConfig.java: ########## @@ -53,18 +53,23 @@ public class FileSystemConfig extends StoragePluginConfig { public static final String NAME = "file"; private final String connection; + private final String[] mountCommand, unmountCommand; Review Comment: @cgivre apologies, I missed this. The motivation was runtime efficiency since I don't need the overhead of dynamic collections here. The Runtime.exec method that I hand off to is also based on String[] so by matching that I don't need to do a List to array conversion. Are Lists preferable when working with arrays from Jackson though, because I can certainly change this? > Add mount and unmount command support to the filesystem plugin > -------------------------------------------------------------- > > Key: DRILL-8359 > URL: https://issues.apache.org/jira/browse/DRILL-8359 > Project: Apache Drill > Issue Type: Improvement > Components: Storage - File > Affects Versions: 1.20.2 > Reporter: James Turton > Assignee: James Turton > Priority: Minor > Fix For: 2.0.0 > > > This Jira proposes optional mount and unmount commands in the filesystem > plugin with the goal of enabling the dynamic definition of filesystem mounts > in the storage configuration. It is mainly anticpiated that network and cloud > filesystems that have FUSE drivers (sshfs, davfs, rclone, ...) will be used > in this way but local device mounts and image/loop device mounts (ISO, IMG, > squashfs, etc.) might also be of interest. Filesystems that can be mounted in > this way become queryable by Drill cluster without burden of dedicated > storage plugin development. > The provided commands are executed in their own processes by the host OS and > run under the OS user that is running the Drill JVM. The mount command will > be executed when an enabled plugin is initialised (something that is done > lazily) and whenever it transitions from disabled to enabled. The provided > unmount command will be executed whenever a plugin transitions from enabled > to disabled and when the Drillbit shuts down while the plugin has been > initialised and is enabled. > Example using udisks on Linux to mount and unmount an image of an ext4 > filesystem. > {code:java} > { > "type" : "file", > "connection" : "file:///", > "mountCommand" : [ "sh", "-c", "udisksctl loop-setup -f /tmp/test.img && > udisksctl mount -b /dev/loop0" ], > "unmountCommand" : [ "sh", "-c", "udisksctl unmount -b /dev/loop0 && > udisksctl loop-delete -b /dev/loop0" ], > "workspaces" : { > ...{code} -- This message was sent by Atlassian Jira (v8.20.10#820010)