{
 "number": 36234,
 "repo": "bitcoin/bitcoin",
 "url": "https://github.com/bitcoin/bitcoin/pull/36234",
 "title": "util: avoid redundant rolling Bloom insertions",
 "author": "JeremyRubin",
 "author_association": "CONTRIBUTOR",
 "created_at": "2026-09-12T18:45:13Z",
 "updated_at": "2026-09-14T19:31:40Z",
 "age_days": 4,
 "draft": false,
 "labels": [
  "Utils/log/libs"
 ],
 "milestone": null,
 "base": "master",
 "head_sha": "25ce2fa1f6f11cdab61bb4a3897be0e7a6cf8a4f",
 "head_ref": "rolling-bloom-dedup-fix",
 "head_repo": "JeremyRubin/bitcoin",
 "head_history": [],
 "additions": 74,
 "deletions": 3,
 "changed_files": 3,
 "commit_count": 1,
 "size_bucket": "S",
 "mergeable_state": "clean",
 "bot": {
  "drahtbot": {
   "present": true,
   "reviews": {},
   "conflicts": []
  }
 },
 "acks_parsed": {},
 "acks_tally": {
  "ack": 0,
  "stale_ack": 0,
  "concept_ack": 0,
  "approach_ack": 0,
  "nack": 0,
  "concept_nack": 0,
  "approach_nack": 0
 },
 "reviews": {
  "approved": 0,
  "changes_requested": 0,
  "distinct_reviewers": [
   "instagibbs"
  ]
 },
 "signals": {
  "needs_rebase": false,
  "ci_failed": false,
  "mergeable_state": "clean",
  "last_author_activity": "2026-09-12T18:05:34Z",
  "last_reviewer_activity": "2026-09-14T19:31:40Z",
  "last_reviewer": "instagibbs",
  "author_silent_days": 4,
  "waiting_on_author_days": 2,
  "days_since_update": 2
 },
 "refs": {
  "mentioned": [],
  "depends_on": [],
  "fixes": [],
  "linked_issues": [],
  "references": [],
  "conflicts": []
 },
 "stack": {
  "shares_commits_with": [],
  "based_on": [],
  "base_for": []
 },
 "review_paths": [],
 "body": "Re-inserting a value already represented by the current generation advances its entry counter without adding membership information. Repeating one value can therefore expire unrelated entries sooner than the configured capacity implies.\n\nDetect current-generation membership before rotating. Only repeats already represented by that generation are free; refreshing an older entry consumes capacity normally. Retain the computed hashes so insertion does not hash the value twice.\n\nOne trade off is how insert into current generation when present in past generation. For this patch, the intended behavior is to count this as a fresh insert, so that the entry expires with the current insert generation.",
 "commits": [
  {
   "sha": "25ce2fa1f6f11cdab61bb4a3897be0e7a6cf8a4f",
   "date": "2026-09-12T18:05:34Z",
   "message": "util: avoid redundant rolling Bloom insertions\n\nRe-inserting a value already represented by the current generation\nadvances its entry counter without adding membership information.\nRepeating one value can therefore expire unrelated entries sooner than\nthe configured capacity implies.\n\nDetect current-generation membership before rotating. Only repeats\nalready represented by that generation are free; refreshing an older\nentry consumes capacity normally. Retain the computed hashes so\ninsertion does not hash the value twice."
  }
 ],
 "timeline": [
  {
   "t": "2026-09-14T19:31:40Z",
   "kind": "comment",
   "who": "instagibbs",
   "assoc": "MEMBER",
   "text": "Are there any worrying usage patterns that you've seen this resolves, or is this more of a general correctness issue that was noticed?"
  }
 ],
 "labels_log": [
  {
   "t": "2026-09-12T18:45:17Z",
   "action": "labeled",
   "label": "Utils/log/libs",
   "who": "DrahtBot"
  }
 ],
 "state_log": [],
 "text_chars": 1408,
 "text_tokens_estimate": 352,
 "changed_paths": [
  "src/common/bloom.cpp",
  "src/common/bloom.h",
  "src/test/bloom_tests.cpp"
 ],
 "files": [
  {
   "path": "src/common/bloom.cpp",
   "add": 20,
   "del": 3
  },
  {
   "path": "src/common/bloom.h",
   "add": 2,
   "del": 0
  },
  {
   "path": "src/test/bloom_tests.cpp",
   "add": 52,
   "del": 0
  }
 ],
 "test_lines": 52,
 "git": {
  "head": "25ce2fa1f6f11cdab61bb4a3897be0e7a6cf8a4f",
  "head_matches_backup": true,
  "base": "f3fec67c3eeb27d5be1bc9d57ca737b74fcd762d",
  "commits": [
   {
    "sha": "25ce2fa1f6",
    "subject": "util: avoid redundant rolling Bloom insertions",
    "files": 3,
    "add": 74,
    "del": 3
   }
  ],
  "patch_truncated": false
 },
 "input_hash": "c8a1709f85c17d73",
 "extracted_at": "2026-09-17T16:15:31+00:00"
}