Skip to content

Commit 49c6232

Browse files
bertysentryclaude
andcommitted
Drop the unverified iLO 5 session-lifetime claims
Further lab runs with a dedicated iLO account showed that the D4h comes from sessions deleted by another client of the lab iLO (a management tool that deletes the IPMI sessions every two minutes): the iLO applies the deletion at a whole minute of the session's age, whatever the keep-alive command (a Get Device ID keep-alive session was revoked at 121 s too). The keep-alive stays a Get Device ID, as ipmitool sends, without the claim that Get Channel Authentication Capabilities shortens iLO sessions; troubleshooting describes the revoked-session symptom instead. Co-Authored-By: Claude Opus 5.5 <[email protected]>
1 parent 2673350 commit 49c6232

4 files changed

Lines changed: 9 additions & 12 deletions

File tree

‎src/main/java/org/metricshub/ipmi/core/connection/Connection.java‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -687,8 +687,7 @@ public void notify(StateMachineAction action) {
687687
}
688688

689689
/**
690-
* The keep-alive request: a Get Device ID, as ipmitool sends. HP iLO 5 revokes the privileges of a session 60 s
691-
* after a Get Channel Authentication Capabilities or a Set Session Privilege Level sent in it, instead of 120 s.
690+
* The keep-alive request: a Get Device ID, as ipmitool sends.
692691
*/
693692
private static final class KeepAlive extends IpmiCommandCoder {
694693

‎src/site/markdown/troubleshooting.md‎

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,11 @@ one, check:
6464
With the [low-level API](low-level-api.html#privilege-level), open the session with the level the
6565
command needs (Operator for Chassis Control, Administrator for configuration commands).
6666

67-
When commands that worked earlier in the same session start failing with `0xD4`, the BMC revoked
68-
the session. HP iLO 5 does so 120 s after the session opened, whatever its privilege level, and
69-
can do so after 60 s when a Get Channel Authentication Capabilities or a Set Session Privilege
70-
Level command is sent during the session (the library's keep-alive is a Get Device ID for that
71-
reason). Each `IpmiClient` call opens its own session; with the low-level API, open a new session
72-
for work that lasts longer.
67+
When commands that worked earlier in the same session start failing with `0xD4`, the session was
68+
revoked, and sending the command again in the same session does not help. On HP iLO 5, this is
69+
what happens when another client deletes the sessions, for example a management tool logged in
70+
as an administrator; the revocation shows at a whole minute of the session's age (60 s, 120 s,
71+
...). Each `IpmiClient` call opens its own session, so the next call works again.
7372

7473
## `... is not yet implemented.`
7574

‎src/site/markdown/upgrading.md‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,8 @@ The `IpmiClient` API is unchanged, and the client is more tolerant of real-world
4444
reply is sent again;
4545
* the [keep-alive](configuration.html#keep-alive) is actually sent: with the default `pingPeriod`
4646
(`-1`) 1.2.02 sent no keep-alive at all, so a session could expire during a long collection; the
47-
keep-alive is now a Get Device ID every 30 s by default, whose reply is discarded (not the Get
48-
Channel Authentication Capabilities of 1.2.02, after which HP iLO 5 revokes the session within
49-
60 s), and a Get Channel Authentication Capabilities command sent by the application in a
47+
keep-alive is now a Get Device ID every 30 s by default, as `ipmitool` sends, whose reply is
48+
discarded, and a Get Channel Authentication Capabilities command sent by the application in a
5049
session gets its reply (1.2.02 dropped it, as it did the keep-alive replies);
5150
* a one-way IPMI message (`IpmiConnector.sendOneWayMessage()`, `IpmiAsyncConnector.sendMessage()`
5251
with `isOneWay`) is queued like any request: its tag stays reserved, and it takes a slot of the

‎src/test/java/org/metricshub/ipmi/client/runner/GetSensorsRunnerTest.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ protected ConnectionHandle getHandle() {
144144
final CompactSensorRecord record = new CompactSensorRecord();
145145
record.setName(DEVICE_NAME);
146146

147-
// HP iLO answers D4h once it revoked the session
147+
// HP iLO answers D4h once the session was revoked
148148
failure.set(new IPMIException(CompletionCode.InsufficentPrivilege));
149149
assertNull(runner.getSensorRecordReading(record));
150150

0 commit comments

Comments
 (0)