Skip to content

feat(rst): add component capability registry#289

Merged
swartzn merged 4 commits intomainfrom
swartzn/feat/add-capability-registry
Feb 11, 2026
Merged

feat(rst): add component capability registry#289
swartzn merged 4 commits intomainfrom
swartzn/feat/add-capability-registry

Conversation

@swartzn
Copy link
Copy Markdown
Contributor

@swartzn swartzn commented Jan 14, 2026

Requires ThinkParQ/protobuf#66

What does this PR do / why do we need it?

Required for all PRs.

Add global component registry for build-info/features with support helpers.
Expose GetCapabilities on remote and sync servers.
Block sync connections to remote when required features are missing.

Gate remote push filters behind the new filter-files feature flag.

  • Safeguards against unsupported remote nodes that would ignore --filter-files and send everything.

Related Issue(s)

Required when applicable.

Where should the reviewer(s) start reviewing this?

Only required for larger PRs when this may not be immediately obvious.

Are there any specific topics we should discuss before merging?

Not required.

What are the next steps after this PR?

Not required.

Checklist before merging:

Required for all PRs.

When creating a PR these are items to keep in mind that cannot be checked by GitHub actions:

  • Documentation:
    • Does developer documentation (code comments, readme, etc.) need to be added or updated?
    • Does the user documentation need to be expanded or updated for this change?
  • Testing:
    • Does this functionality require changing or adding new unit tests?
    • Does this functionality require changing or adding new integration tests?
  • Git Hygiene:

For more details refer to the Go coding standards and the pull request process.

@swartzn swartzn requested a review from a team as a code owner January 14, 2026 21:18
@swartzn swartzn self-assigned this Jan 14, 2026
@swartzn swartzn force-pushed the swartzn/feat/add-capability-registry branch 3 times, most recently from 55cbdc8 to a53110f Compare January 18, 2026 06:55
@iamjoemccormick iamjoemccormick linked an issue Jan 30, 2026 that may be closed by this pull request
Copy link
Copy Markdown
Member

@iamjoemccormick iamjoemccormick left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let me know if it'd be easier to hop on a call and discuss any of my feedback! In particular some of my suggestions around introducing a CachedComponentRegistry.

Comment thread common/registry/capability.go Outdated
Comment thread common/registry/capability.go Outdated
Comment thread common/registry/capability.go Outdated
Comment thread common/registry/capability.go
Comment thread common/rst/jobrequest.go Outdated
Comment thread rst/remote/internal/worker/beesync.go
Comment thread common/registry/errors.go Outdated
Comment thread common/rst/jobrequest.go Outdated
Comment thread ctl/pkg/config/config.go Outdated
Comment thread common/registry/cache.go Outdated
Comment thread common/registry/cache.go Outdated
Comment thread common/registry/capability.go Outdated
Comment thread rst/remote/internal/worker/beesync.go Outdated
Comment thread common/registry/capability.go Outdated
Comment thread common/registry/capability.go Outdated
@swartzn swartzn force-pushed the swartzn/feat/add-capability-registry branch from ba31a10 to 81c87ed Compare February 10, 2026 18:08
Comment thread common/registry/cache.go
Add registry package to support component capabiltiies and build info.
- add ComponentRegistry type to encapsulate component capabilities and build info.
- add CachedComponentRegistry to support cached registries for individual components.
Add GetCapabilities to remote/sync servers with build info and start time.
Validate capabilities before remote connects to sync nodes.
Add process-wide cached registry accessor with optional lazy init for BeeRemote.
@swartzn
Copy link
Copy Markdown
Contributor Author

swartzn commented Feb 11, 2026

@iamjoemccormick I made two more changes that are clearly seen if you look at the diff, https://github.com/ThinkParQ/beegfs-go/compare/b2e40358a6324248d79269dee86bcb1dd9b436a2..0f886948f7cf2606e55a8ecf573649ea45703874.

Changes:

  1. Fixed NewCachedComponentRegistry. For some reason, my previous push didn't contain all of the changes needed for clientFunc argument changes.
  2. Up-leveled the registry nil and startTimestamp zero time error checks from updateRegistry to GetComponentRegistry.

Copy link
Copy Markdown
Member

@iamjoemccormick iamjoemccormick left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@swartzn swartzn merged commit 6afb21a into main Feb 11, 2026
6 checks passed
@swartzn swartzn deleted the swartzn/feat/add-capability-registry branch February 11, 2026 17:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add GetCapabilities endpoints to Remote and Sync servers

2 participants