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

Update plugins without downtime #4828

Open
kontrollanten opened this issue Mar 3, 2022 · 4 comments · May be fixed by #6443
Open

Update plugins without downtime #4828

kontrollanten opened this issue Mar 3, 2022 · 4 comments · May be fixed by #6443
Labels
Component: PeerTube Plugin 📦 Features that can be developed in a plugin, but require PeerTube plugin API development Type: Feature Request ✨

Comments

@kontrollanten
Copy link
Contributor

Describe the problem to be solved
When updating a plugin the plugin will be unavailable during the installation. We're storing all our plugins at s3fs, which means it takes 15-60 minutes to update.

Describe the solution you would like:
Let the plugin be available during the whole installation.

Describe alternatives you have considered
Install in the new version in tmp folder and just do a quick switch when it's done.

@Chocobozzz Chocobozzz added Component: PeerTube Plugin 📦 Features that can be developed in a plugin, but require PeerTube plugin API development Type: Discussion 💭 labels Mar 8, 2022
@kontrollanten
Copy link
Contributor Author

kontrollanten commented Mar 8, 2022

An easy solution could be to have the following file structure:

storage/plugins/latest (symlink)
storage/plugins/[checksum of package.json]

So the latest folder is always stable, and the symlink will change after update. Any opinions, @Chocobozzz ?

@Chocobozzz
Copy link
Owner

I'm sorry but I'm not sure I want to maintain this particular use case. Plugin installation/updates should be quite fast (a few seconds). If it takes 15-60 minutes on your system, I don't think s3fs is the appropriate tool to store PeerTube server files (including plugins).

@kontrollanten
Copy link
Contributor Author

I know s3fs is a bad solution for such case, and we will switch do a disk. But even a few seconds is bad for us, especially if something goes wrong with the update and the plugin will be unavailable for a longer time.

The use case is that we've a plugin that exposes an API that is critical in some apps that we're developing.

@kontrollanten
Copy link
Contributor Author

We've left s3fs now, but still it's not ideal that the plugin gets uninstalled during updates. With the solution below we should be able to skip the decache functionality used today.

An easy solution could be to have the following file structure:

storage/plugins/latest (symlink)
storage/plugins/[checksum of package.json]

So the latest folder is always stable, and the symlink will change after update.

kontrollanten added a commit to kontrollanten/PeerTube that referenced this issue Jun 17, 2024
Create a new folder each time a new plugin/theme is installed or
updated. The folder name is created based on the package.json content
hash.

closes Chocobozzz#4828
@kontrollanten kontrollanten linked a pull request Jun 17, 2024 that will close this issue
4 tasks
kontrollanten added a commit to kontrollanten/PeerTube that referenced this issue Jun 17, 2024
Create a new folder each time a new plugin/theme is installed or
updated. The folder name is created based on the package.json content
hash.

closes Chocobozzz#4828
kontrollanten added a commit to kontrollanten/PeerTube that referenced this issue Jun 19, 2024
Create a new folder each time a new plugin/theme is installed or
updated. The folder name is created based on the package.json content
hash.

closes Chocobozzz#4828
kontrollanten added a commit to kontrollanten/PeerTube that referenced this issue Jun 19, 2024
Create a new folder each time a new plugin/theme is installed or
updated. The folder name is created based on the package.json content
hash.

closes Chocobozzz#4828
kontrollanten added a commit to kontrollanten/PeerTube that referenced this issue Jun 19, 2024
Create a new folder each time a new plugin/theme is installed or
updated. The folder name is created based on the package.json content
hash.

closes Chocobozzz#4828
kontrollanten added a commit to kontrollanten/PeerTube that referenced this issue Jun 19, 2024
Create a new folder each time a new plugin/theme is installed or
updated. The folder name is created based on the package.json content
hash.

closes Chocobozzz#4828
kontrollanten added a commit to kontrollanten/PeerTube that referenced this issue Jun 20, 2024
Create a new folder each time a new plugin/theme is installed or
updated. The folder name is created based on the package.json content
hash.

closes Chocobozzz#4828
kontrollanten added a commit to kontrollanten/PeerTube that referenced this issue Jun 26, 2024
Create a new folder each time a new plugin/theme is installed or
updated. The folder name is created based on the package.json content
hash.

closes Chocobozzz#4828
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component: PeerTube Plugin 📦 Features that can be developed in a plugin, but require PeerTube plugin API development Type: Feature Request ✨
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants