feat(ci,config): add comment coverage gate for reference.conf#32
feat(ci,config): add comment coverage gate for reference.conf#32bladehan1 wants to merge 15 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
2 issues found across 3 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name=".github/scripts/check_reference_comments.py">
<violation number="1" location=".github/scripts/check_reference_comments.py:20">
P2: The key-line regex is too narrow for valid HOCON key syntax (e.g., hyphenated/quoted keys and `+=`), which can create false negatives in the coverage gate.</violation>
<violation number="2" location=".github/scripts/check_reference_comments.py:107">
P2: The genesis exemption misses equivalent nested HOCON syntax (`genesis { block { ... } }`), causing false comment-coverage failures for exempt keys.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
cf4f06b to
74d4ceb
Compare
668bf63 to
55696dc
Compare
Add check_reference_comments.py, a line-oriented Python script that enforces every key in reference.conf carries an inline or immediately- preceding comment. Wire it into pr-check.yml as a new CI step directly after the existing key-format gate. Annotate all previously undocumented keys in reference.conf with inline # / // comments. The committee block now includes the /wallet/getchainparameters API key name and ProposalType ID for each governance parameter. genesis.block array elements (assets, witnesses) carry field-level inline comments derived from the existing block descriptions; there is no genesis.block exemption.
55696dc to
0b9c4ca
Compare
…onprotocol#6816) MerkleTree was a shared volatile singleton holding per-build mutable state (leaves/hashList/root). When merkle validation runs concurrently (e.g. pre-broadcast validation on the P2P handler threads alongside the apply path), concurrent calls mutated the shared leaves list and threw ArrayIndexOutOfBoundsException (surfaced on an ARM SR due to its weaker memory model), which escaped the BadBlockException catch and dropped peers. - MerkleTree: replace the getInstance() singleton with a static build() factory returning a thread-confined instance; drop the now-inaccurate @NotThreadSafe. - BlockCapsule.calcMerkleRoot: use MerkleTree.build(ids); keeps the config-driven hash engine, so no consensus behavior change. - MerkleTreeTest: switch call sites to build(); un-ignore testConcurrent and turn it into a regression test asserting 1000 concurrent builds succeed.
* feat(*): disable exchange transaction (tronprotocol#6507) * update a new version. version name:GreatVoyage-v4.8.0-1-g45e3bf88ca,version code:18634 (tronprotocol#6508) * Merge release_v4.8.1 to master (tronprotocol#6541) * update a new version. version name:GreatVoyage-v4.8.0.1-1-g44a4bc8263,version code:18636 (tronprotocol#6542) * feat(vm): optimize the check for create2 * feat(vm): optimize the check for ModExp * test(vm): add tests for create2/modExp checks * feat(version): update version to 4.8.1.1 * feat(ci): add PR pipeline and system-test workflows New workflows: - pr-build.yml: multi-OS build matrix (macOS, Ubuntu, RockyLinux, Debian11) and changed-line/overall coverage gate - pr-check.yml: PR title/body lint + Checkstyle - pr-reviewer.yml: scope-based reviewer auto-assignment - pr-cancel.yml: cancel in-progress runs when PR is closed unmerged - system-test.yml: spin up FullNode and run the system-test suite Existing workflows: - codeql.yml: bump to v4/v5 actions, switch to manual build-mode with JDK 8, add paths-ignore for docs-only changes - math-check.yml: bump checkout/upload-artifact/github-script versions * feat(config): fix git.properties NPE * update a new version. version name:GreatVoyage-v4.8.1-6-g52d7d9d23e,version code:18643 --------- Co-authored-by: YAaron <4241080+kuny0707@users.noreply.github.com> Co-authored-by: zz <aaa@bb.cc>
…ents Address review feedback on PR tronprotocol#6810: - blockCacheTimeout: correct unit from (s) to (min) — both SyncService and AdvService pass the value to expireAfterWrite with TimeUnit.MINUTES - pBFTExpireNum: reword from "maintenance rounds" to block-lag count; PbftMsgHandler compares headBlockNum - msg.getNumber() against it - allowReceiptsMerkleRoot: mark as reserved/no-op; Args.java explicitly skips applying it at runtime - allowTvmBlob: narrow from "blob transaction support" to the actual effect: enabling BLOBHASH and BLOBBASEFEE opcodes in TVM - committee section header: soften — not every entry is a committee proposal (allowNewRewardAlgorithm is a startup flag) - event.subscribe block: move inline comments on { / [ openers to the preceding line per style feedback - contractAddress / contractTopic: remove duplicate element-level comments; keep the array-level comment only
StorageConfig.properties is List<PropertyConfig> and is parsed manually via StorageConfig.readProperties(); ConfigBeanFactory cannot bind list-of-object fields so the hoconKeysAreBound gate reports it as an orphan. Add it to STORAGE_HOCON_ORPHANS with the rationale comment.
Merge-order races can leave the base branch with a pre-existing failing test unrelated to the current PR (e.g. tronprotocol#6803 vs tronprotocol#6806 ordering). The Coverage Base job only needs jacoco XML for coverage diffing, so a stale test failure must not block the whole job. Add continue-on-error: true to the Build (base) and Test with RocksDB engine (base) steps, and relax if-no-files-found from error to warn so that a compile-level failure degrades gracefully instead of producing a misleading second failure.
9de7f51 to
0041c2b
Compare
All keys whose value opens with { or [ now carry the comment on the
line immediately above the key rather than on the same line after the
opener. Applies to 16 remaining occurrences:
node.backup, members, node.metrics, prometheus, p2p (version),
active, passive, fastForward, http, rpc, dns, jsonrpc, rate.limiter.p2p,
seed.node, ip.list, localwitness, block, vm.
CI gates: check_reference_comments → OK, check_reference_conf → OK (290 keys).
…passive, maxFastForwardNum) - db.directory: reference CLI flag --output-directory explicitly - checkpoint.sync: note it is ignored under checkpoint.version = 1 (default); only CheckPointV2Store.java:19 consumes it - P2P service: add missing space after comma - maxFastForwardNum: reword to describe SR-forwarding semantics, verified via RelayService.java:234 getNextWitnesses() - passive: note port numbers are configured but ignored; Args.java:657 only extracts InetAddress, discarding the port - check_reference_comments.py: add encoding="utf-8" to read_text()
What does this PR do?
Adds a comment-coverage CI gate for `reference.conf` and annotates all previously undocumented configuration keys.
Changes
`.github/scripts/check_reference_comments.py` (new, 358 lines, zero runtime dependencies)
`.github/workflows/pr-check.yml` (+6 lines)
`common/src/main/resources/reference.conf`
Why are these changes required?
`reference.conf` is the primary configuration reference for node operators. Before this change most keys had no explanation, forcing operators to read source code. There was no CI enforcement either, so new keys could be merged without documentation.
This PR has been tested by:
Extra details