Repository navigation
Rewrite the documentation with Sentry Maven Skin 8 and a full page set (#113) - #124
Conversation
#113) Build: oss-parent 5, maven-site-plugin 4.0.0-M16 with maven-skin-tools 1.8.01 (the inherited 3.12.1 randomly failed with a Velocity AbstractMethodError), sentry-maven-skin 8.0.01, UTF-8 report encoding, surefire report, SpotBugs report pinned to 4.10.4.1, changelog report disabled. Search, dark mode, copy-to-clipboard and llms.txt come with the skin. Documentation: 14 pages in Getting Started / Usage / Reference menus (overview, installation, preparing the BMC, chassis status, FRU inventory, sensors and the text output format, configuration, timeouts and errors, low-level API, Serial over LAN, supported commands, troubleshooting, upgrading, migrating from Verax), written from the code. The examples and error messages were checked against a Lenovo IMM; Serial over LAN is documented from the code only. site.css fixes the IMPORTANT callouts in dark mode. README and AGENTS.md updated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8558e4cadd
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- Low-Level API: the example falls back to suite 3 instead of the BMC's last suite, which can be an xRC4 or MD5-128 suite the library does not implement (verified on a Lenovo IMM: picks 17, opens the session). - FRU Inventory, Timeouts and Errors: a FRU read error does not fail the call, except Get FRU Inventory Area Info on FRU 0, which propagates. - Serial over LAN: warn about the data loss of writes longer than two packets until #123 is fixed. - System.exit(0), not System.exit(). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bc8f017211
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- Serial over LAN: the example selects 17 or 3 from the suites the BMC offers (SpecificCipherSuiteSelector ignores them), and tears down the connector in a finally block, since a failed constructor closes nothing (a second tearDown() is harmless, checked). - Low-Level API: skip the SEL walk on an empty SEL, and warn that OEM SEL entries are decoded with the system event layout, types C0h and E0h throwing IllegalArgumentException. - Supported Commands: OemRecord has a manufacturer ID for type C0h only. - Overview, Sensors, README: the client reads the Full and Compact sensor records, not every sensor. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0fb47dcb43
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Walking the whole SEL of the test BMCs showed OEM timestamped entries on both (358 of 643 on a Lenovo IMM), which the decoder reports with meaningless sensor and event fields: the example printed three of them as "Voltage LimitNotExceeded". It now prints the event fields of system event records only, its output is the real one, and the warning links #125. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Low-Level API: close the session in a finally block, since tearDown() does not log out and BMCs have few session slots. - Supported Commands: a Get SDR reply without any record byte is not skipped: the decoder rejects it and the walk fails. - FRU Inventory: FRU 0 is attached to the system board only when it has a Board Info area; the MultiRecord decoder drops the last record (#85). - Preparing the BMC: the firewall rules use the configured port, and Serial over LAN may use the payload port announced by the BMC. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3aaeb10d9c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- Low-Level API: DCMI, group extension and OEM commands need a request with a raw network function, since NetworkFunction only lists 00h-0Bh; the example (Get DCMI Capabilities Info) was run on a Lenovo IMM and a GIGABYTE BMC. - Serial over LAN: close() does not log out when deactivating the payload fails. - Sensors: an empty threshold also means a threshold of exactly 0, and every threshold is 0.0 on BMCs affected by #83. - Configuration: credentials and the BMC key go through the platform charset; non-ASCII Kg bytes break the login (#90). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c187ecfc0f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- Timeouts and Errors: a Get SDR reply without any record byte fails the call, it is not skipped. - FRU Inventory: a Read FRU Data chunk without a reply only truncates the FRU, while Get FRU Inventory Area Info fails the call for FRU 0 on any error and for the other FRUs on no reply; word-addressed FRUs are read at wrong offsets (#85, by the spec, not seen on the test BMCs). - Serial over LAN: the constructors that open their own session take no BMC key; use a low-level session on two-key BMCs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2702c69e7c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Sensors and Troubleshooting no longer promise 0.0 for an unavailable reading: the library ignores the reading-unavailable and scanning-disabled flags and converts whatever raw byte the BMC returns (#110). The readings example now checks isSensorStateValid(), which flags the three unavailable sensors of the GIGABYTE test BMC and leaves the Lenovo sample output unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8d38034722
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- Configuration, Timeouts and Errors, Low-Level API: the default pingPeriod of -1 disables the keep-alive. ConnectionManager(port, pingPeriod) reads the 30 s property in this(port), then overwrites it with -1, so only IpmiConnector(int) and IpmiConnector(int, InetAddress) get the 30 s period. Recommend setting pingPeriod explicitly. - Low-Level API: the SEL example uses reservation 0, since whole-entry reads need none (IPMI 2.0 section 31.5) and Reserve SEL is optional; checked on a Lenovo IMM and a GIGABYTE BMC, same output. - Serial over LAN: on a BMC that serves SOL on another port, close() leaves the first session open. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 553e0b3db9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Sensors: a record owned by a satellite controller or another LUN is read from the BMC by its number alone and can get an unrelated reading (#84); OEM sensors whose reply has a single state byte get no state; Full records with no analog reading still produce a reading line. FRU Inventory: FRU 0 can be returned twice (locator and system board), and a failed chunk in the middle of a FRU shifts the following data. All by the specification and the code, not seen on the test BMCs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fa0809a64c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
The pages document how the library is meant to work: the bugs that the Codex reviews of #124 found in the library are tracked as issues #127 to #132 (and #123, #125, #126) and are no longer described in the pages. The corrections of the documentation itself stay (cipher suite selection, closing the session in a finally block, the SEL example, the firewall port, System.exit(0), the scope of the sensors read). AGENTS.md: file library bugs found while writing documentation as issues instead of describing them in the pages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 039cd2e19d
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| Data longer than the BMC's SOL payload size (announced when the payload is activated) is sent in | ||
| several packets. |
There was a problem hiding this comment.
Avoid promising lossless multi-packet SOL writes
When a write requires more than two SOL packets, this promise is false: SerialOverLan.writeBytes() creates each loop chunk with Arrays.copyOfRange(remainingBytes, currentIndex, maxBufferSize), so the second chunk is empty and the bytes at that position are dropped; writes needing still more chunks can throw when the start exceeds that fixed end index. Callers following this documentation can silently lose part of a long command or transfer, so fix the chunk boundary or avoid claiming that arbitrary-length data is sent correctly.
AGENTS.md reference: AGENTS.md:L35-L35
Useful? React with 👍 / 👎.
|
|
||
| | `pingPeriod` | Behavior | | ||
| | --- | --- | | ||
| | `-1` (default) | The `pingPeriod` of [`connection.properties`](timeouts-and-errors.html#library-wide-defaults): 30 000 ms | |
There was a problem hiding this comment.
Restore the actual default keep-alive behavior
Fresh evidence after the earlier fix is that the final tree restores the claim that -1 uses the 30-second property value, while AbstractIpmiRunner passes -1 to the two-argument connector and ConnectionManager(int, long) overwrites the property-derived value with -1; Connection.connect() then starts a timer only for positive values. Thus the default sends no keep-alive, and a collection longer than the BMC's inactivity timeout can lose its session unless callers explicitly set a positive period; either fix the constructor or document the effective behavior.
AGENTS.md reference: AGENTS.md:L35-L35
Useful? React with 👍 / 👎.
Closes #113.
Build
oss-parent4 → 5.maven-site-plugin4.0.0-M16 withmaven-skin-tools1.8.01, pinned in<build><plugins>. The 3.12.1 inherited from the parent put Velocity 1.7 next to the Velocity 2.x tools ofmaven-skin-tools, which caused the randomAbstractMethodErrorseen on Don't abort the SDR repository walk on OEM or undecodable records #112.sentry-maven-skin6.4.01 → 8.0.01.site.xmluses the SITE 2.0.0 descriptor, with menus, top links, social link and footer links as in winrm-java.project.reporting.outputEncodingis set to UTF-8. Project info, JXR, Checkstyle, PMD/CPD and Javadoc (atapidocs/) are unchanged and still inherited or configured as before.mvn clean verify sitepasses on JDK 17 (33 tests). Search, dark mode, copy-to-clipboard andllms.txtwere checked on the locally served site. A link checker over the 14 generated pages found no broken internal links or anchors.Documentation
14 pages, replacing the single page:
IpmiClientpicks a suite by position, Kg, firewall,ipmitool/ipmiutilchecks).IpmiResultConverter), Configuration (everyIpmiClientConfigurationoption;skipAuthactually forces cipher suite 3 and does not skip authentication), Timeouts and Errors (overall vs per-message timeout, retries,connection.propertiesdefaults, exceptions), Low-Level API (IpmiConnector, SEL reading, chassis control, custom commands, async API), Serial over LAN.index.md, plus 1.2.01 andorg.sentrysoftware:ipmi), Migrating from Verax.README (short description and example, links to the new pages) and AGENTS.md (doc conventions, SpotBugs note) are updated.
Notes for reviewers
finally, the SEL example with reservation 0, the firewall port,System.exit(0), the scope of the sensors read).IpmiClientcalls, the low-level session, and reading the SEL. The sample output is real, with serial numbers masked. The error messages documented for a wrong password, an unknown user and an unreachable BMC were observed on that system. The other snippets compile at Java 8 level.PropertiesManager.getInstance().setProperty("timeout", …)before the first call. It was verified against an address that never replies.SerialOverLan.writeBytes: SerialOverLan.writeBytes loses data or throws for buffers longer than two SOL payloads #123.site.css(copied from winrm-java) made[!IMPORTANT]callouts unreadable in dark mode (white box, light text), because the skin swaps the alternate colors in dark mode. This PR adds a targeted override; the same latent bug in winrm-java is Site dark mode: IMPORTANT callouts render as light text on a white box winrm-java#202.metricshub-logo-only.png, as in winrm-java.deploy.ymlrun.🤖 Generated with Claude Code