diff options
| author | Paul Buetow <paul@buetow.org> | 2026-05-22 12:31:26 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-05-22 12:31:26 +0300 |
| commit | e7b97833bfb1415d147d30d119052a56bb39967b (patch) | |
| tree | 0f80808aca447c7a85581651c4b6d32cda13c7e0 | |
| parent | 569101d4941a9c9c68b4558f768e353b8529abd5 (diff) | |
| parent | cb1e4376afe9f887b9e3b3b2a9ddef116bedb0cc (diff) | |
Merge branch 'develop': document lock ordering in metric set handlers
| -rw-r--r-- | internal/rpn/rpn_parse.go | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/internal/rpn/rpn_parse.go b/internal/rpn/rpn_parse.go index 2d2963a..7abd41c 100644 --- a/internal/rpn/rpn_parse.go +++ b/internal/rpn/rpn_parse.go @@ -367,6 +367,9 @@ func (r *RPN) evaluate(input string, tokens []string) (string, error) { return result, nil case "binary": if i+2 < len(tokens) && tokens[i+2] == "set" { + // Lock order: r.mu → o.mu (same as RPN.SetPrefixMode) + // No deadlock risk: both paths acquire in the same direction. + // r.mu is held by evaluate(); o.mu is a separate mutex on Operations. r.prefixMode = IEC r.ops.SetPrefixMode(IEC) return "prefix mode: IEC", nil |
