Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kestra adds an extra slash as a root folder in S3 bucket which makes it inaccessible by s3 GUI tools #3933

Open
aku opened this issue Jun 5, 2024 · 7 comments
Labels
area/plugin Plugin-related issue or feature request bug Something isn't working kind/breaking-change Code modifications needed before upgrading kind/customer-request Requested by one or more customers

Comments

@aku
Copy link

aku commented Jun 5, 2024

Issue description

Kestra puts its files into <s3 bucket>//<namespace> folder (notice double slashes). Most GUI tools can't see these files.
image
I've tried Cyberduck, DataGrip, cloudlena/s3manager - none of these tools was able to see Kestra's files
Have a look at this issue for example aws/aws-toolkit-visual-studio#248

Consider removing extra slash for root folders

@brian-mulier-p
Copy link
Member

Hello ! That's a choice that was made at the beginning of Kestra and removing the leading slash will break everything so I'm not sure we can do much 🤔 @tchiotludo wdyt ?

@anna-geller
Copy link
Member

Hi @aku - we discussed this in a team and changing that would require a breaking change we cannot do in a minor release upgrade. We want to offer stability so we will add the issue to the Planned changes for v1.0.0 -- hope you can understand!

@anna-geller anna-geller modified the milestones: v0.18.0, v1.0.0 Jun 6, 2024
@anna-geller
Copy link
Member

anna-geller commented Jun 6, 2024

Great news, we talked more, and it seems we will be able to do it sooner without a breaking change. We'll add a configuration:

kestra:
  storage:
    keep-root-slashes: true

Once you set this configuration to false, the leading slashes should be gone 🎉

Note to the engineer who will pick this up: if set to false, we will need to check for "/" at startup to check if there is something - if there is, we do the migration

@anna-geller anna-geller modified the milestones: v1.0.0, v0.18.0 Jun 6, 2024
@anna-geller anna-geller added enhancement New feature or request and removed technical-issue labels Jun 6, 2024
@aku
Copy link
Author

aku commented Jun 6, 2024

@anna-geller sounds good to me! it would be nice to have this feature without breaking changes. thanks!

@github-project-automation github-project-automation bot moved this to To triage in Issues Jun 10, 2024
@anna-geller anna-geller removed this from the v0.18.0 milestone Jul 12, 2024
@anna-geller anna-geller added the area/plugin Plugin-related issue or feature request label Oct 7, 2024
@anna-geller anna-geller added the kind/customer-request Requested by one or more customers label Dec 10, 2024
@anna-geller anna-geller added bug Something isn't working and removed enhancement New feature or request labels Dec 13, 2024
@anna-geller
Copy link
Member

Next steps:

  • ensure CS team warns every customer to change that boolean if they want to keep the root slashes
  • implement migration path (configuration parameter or running some migration CLI)

@anna-geller
Copy link
Member

Next steps:

  • don't move any files
  • allow configuring this at instance, tenant and namespace level i.e. everywhere where you can configure internal storage backend
  • without moving, we can do it in 0.21

@brian-mulier-p brian-mulier-p removed their assignment Jan 29, 2025
@brian-mulier-p
Copy link
Member

brian-mulier-p commented Jan 29, 2025

To do things in a clean way we need to have a singleton that will provide the paths to all kind of resources as a single entry point because we need a way to inject that configuration and ensure any storage path request goes through that component. Currently that's not the case and the fact that the paths are provided as static fields make this feature really hard to do without a proper refactoring (because currently we probably have to go at the implementation level and change every storage to perform that).

Totally WIP branch going on the implementation-side changes (but I really think that's a wrong direction and the handling should be performed before-hand):
https://github.com/kestra-io/kestra/tree/wip/leading-slash-opt-for-storages
https://github.com/kestra-io/storage-gcs/tree/wip/leading-slash-opt-for-storages

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/plugin Plugin-related issue or feature request bug Something isn't working kind/breaking-change Code modifications needed before upgrading kind/customer-request Requested by one or more customers
Projects
Status: Backlog
Development

No branches or pull requests

4 participants