Skip to content

[Feature Request] Map installed plugins metadata to reduce wasted bandwidth from unnecessary downloads #67

Description

@Ismananda

Is your feature request related to a problem? Please describe.

AutoUpdatePlugins does an excellent job of automating updates and skipping unchanged files using MD5 comparisons. However, the current workflow still requires downloading the actual .jar file (or a large ZIP bundle) first just to verify if the file has changed.

While users can adjust the updates.interval to reduce the check frequency, whenever the update task does run, it leads to wasted bandwidth. The server continuously downloads heavy files that haven't actually received a new release, just to hash and discard them.

Describe the solution you'd like

I suggest implementing a local tracking system (e.g., a versions.yml or metadata.json file) that maps the current version tag or release metadata of each successfully installed plugin.

Proposed Workflow:

  1. During the scheduled update cycle, the plugin fetches only the lightweight metadata (version tag or release ID) from the source API.
  2. It compares this remote metadata against the local cache mapping.
  3. If the remote version matches the local mapping, the plugin gracefully skips the .jar download entirely.
  4. If a new version is detected, it proceeds with the actual file download, validation, and updates the local cache file.

Describe alternatives you've considered

Currently, the plugin relies on MD5 checks to prevent overriding the same file. However, this check happens after the payload is downloaded. Extending the update intervals is the current workaround, but a smarter caching mechanism would prevent bandwidth waste entirely during each check.

Additional context

Key benefits of this enhancement:

  • Reducing Wasted Bandwidth: This is the primary benefit. It drastically cuts down on unnecessary network traffic by only downloading .jar files when an actual update is available.
  • Resource Optimization: Reduces CPU and Disk I/O usage, as the server no longer needs to download, stage, and compute hashes for unchanged heavy files.
  • Faster Update Cycles: The scheduled asynchronous update task will finish much faster, keeping server background processes clean.

Thank you for your time and for maintaining this awesome project!

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions