repo — Plugin/JAR Repository¶
The repo plugin (bundle io.cresco.repo) is a functional plugin that stores, reports on, and serves other plugins' JARs within the fabric. It is the source PluginAdmin pulls from when a plugin is scheduled onto an agent that does not already have the JAR cached.
At a glance¶
| Fact | Value |
|---|---|
| Module path | code/repo |
| Bundle symbolic name | io.cresco.repo |
| Java files | 2 |
| Loaded | At runtime by the controller's StaticPluginLoader (default-on for a global). |
| Type | Functional plugin (@Component implementing PluginService). |
What it does¶
repo serves and stores plugin JARs from a per-plugin data directory, MD5-verified. Multiple repo instances can exist across the mesh; the controller's global tier tracks them (listrepoinstances) and a savetorepo operation fans a putjar RPC out to every repo instance so a plugin JAR is replicated fabric-wide.
Executor actions¶
ExecutorImpl handles EXEC actions (MsgEvent type EXEC):
| Action | Behaviour |
|---|---|
repolist |
Return a compressed repolist — the JAR inventory plus this repo's region/agent/pluginID. |
getjar |
Find a JAR by action_pluginname + action_pluginmd5 and attach its bytes as jardata. |
putjar |
Write a supplied JAR to the repo directory, recompute its MD5, and set uploaded / md5-confirm. |
Configuration read¶
| Key | Default | Meaning |
|---|---|---|
repo_dir |
repo |
Directory (under the plugin data directory) where JARs are stored. |
See Configuration.
Where it fits¶
When the global scheduler places a plugin on an agent, the agent's PluginAdmin resolves the JAR — checking bundle / absolute path / local cache / embedded resources, and finally a remote repo via an RPC getjar (MD5-verified). repo is the endpoint that answers those calls, and putjar/savetorepo is how new plugin artifacts are published into the fabric. See controller for the plugin lifecycle and the global tier.
Observability¶
- Metrics —
getmetricsexposesMeasurementEnginegaugesrepo.plugin.count(jars in the repository) andrepo.bytes(total on-disk size); aggregated by the controller'sgetmetricinventory. See Metrics & Measurements. - Health — registers the
repoFelix HealthCheck (taglocal) reporting the plugin-jar count. See Health & State.
See also¶
- Overview — plugin lifecycle and JAR resolution.
- controller —
PluginAdmin(JAR resolution) and the globalsavetorepofan-out.