Record a backend's capability profile when it joins a pool, not only on an explicit ProfileBackend call (follow-up to #681)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 64/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- go
- Domain
- api, backend, distributed-systems, testing-qa
Research direction
Start by tracing the ProfileBackend RPC handler, capabStore().Record, the pool-join or daemon startup path, and GetCapabilityProfile. Reuse the existing bounded benchmark path and inspect current tests around these entry points. Done means join-time profiling is best effort, preserves existing profiles, remains compatible with explicit profiling, and covers all four acceptance-test cases.
Written by the indexing model from the issue text.
Description
Follow-up from the acceptance check on #681 (see the comment there). #684 implemented the profile, but its first acceptance line ("join records a capability profile") is not met as written; #684's description lists this as a known follow-up.
Problem
The only place a capability profile is recorded is inside the ProfileBackend RPC handler (capabStore().Record). Nothing records one when a backend joins a pool or is first discovered, so a backend has no profile unless someone calls POST /v1/capabilities/profile by hand. Placement by measured capability, the whole reason for #681, therefore only works for backends an operator remembered to profile.
A profile describes the host it is measured on, so it has to be produced on the joining backend. Decide, and state in the PR, whether the joiner self-profiles once it has joined (a startup step that runs when the daemon finds it belongs to a pool and has no profile) or the primary asks the joiner to profile itself at join time.
Acceptance criteria
- Joining a pool (or a daemon starting as a pool member with no profile) records a profile automatically, using the same code path and the same bounded benchmark as
ProfileBackend. - Recording is best effort and never blocks or fails the join: a benchmark or GPU-probe failure is logged and leaves no profile, and a later explicit
ProfileBackendstill works. - It does not re-profile a backend that already has a profile, unless asked explicitly.
- After join,
GetCapabilityProfilereturns the recorded profile without a manual call. - Tests cover: join records a profile; benchmark failure does not fail the join; an existing profile is not overwritten; the explicit RPC still works.
Refs #681, #684.
- Dominant language
- Go
- Stars
- 296
- Forks
- 38
- Avg merge
- 8h 18m
- Merged PRs (30d)
- 559
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from FootprintAI/Containarium
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
FootprintAI/Containarium#2491 ·
Maintainers usually reply within 1 day
-
docs/ci: ssh-authz grace-time wording, stale architecture doc, pin sshpiperd checksumPossibly taken A pull request linked to this issue is open or already merged. Opendocumentation
Difficulty 3/5 1-2 days Newbie friendliness 48/100
FootprintAI/Containarium#3085 · 1 comment ·
Maintainers usually reply within 1 day
-
security
Difficulty 4/5 3-5 days Newbie friendliness 35/100
FootprintAI/Containarium#3084 ·
Maintainers usually reply within 1 day
-
chore
Difficulty 4/5 3-5 days Newbie friendliness 42/100
FootprintAI/Containarium#3083 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 44/100
FootprintAI/Containarium#3079 ·
Maintainers usually reply within 1 day
All issues in FootprintAI/Containarium
Similar issues
-
[flaky test] TestValidatorCommitterDropsEmptyStatusBatch: submits to the mock VC before its stream is registeredPossibly taken @liran-funaro claimed this today. Opencoordinator flaky-test race-condition testing
Difficulty 2/5 1-3 hours Newbie friendliness 83/100
hyperledger/fabric-x-committer#876 ·
Maintainers usually reply within 1 day
-
kind/features
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
TencentBlueKing/bk-nodemgr#3804 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
cloudnative-pg/plugin-barman-cloud#1187 ·
Maintainers usually reply within 1 day
-
[deliverclient] Remove the unused common/deliverclient packagePossibly taken @liran-funaro claimed this today. Opencode-hygiene
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
hyperledger/fabric-x-common#236 ·
Maintainers usually reply within 1 day
-
consensus feature I2 S4 U2
Difficulty 1/5 Under an hour Newbie friendliness 85/100
Maintainers usually reply within 1 day