snmp4j-agent 2.7.3: if no change RowStatus.commit() will directly return and will not change
subRequest.phaseComplete=true --> then the request will always stay in equest.PHASE_2PC_COMMIT and no cleanup will be done —> Table level lock will not be released until timeout (long timer!)
In this case RowStatus.commit(), snmp4j agent should at least mark subRequest.phaseComplete=true so that state machine in class SetHandler could move on.
Scenario:
- snmpset
createAndGo' ---> it is treated as
active` and saved it in RowStatus column value
- snmpset `active’
Thank you for reporting this issue. This is a regression in 2.7.3 but was there in the 3.x branch since 3.2.0. It will be fixed in RowStatus.java
on 2020-05-19T22:00:00Z with SNMP4J-Agent 2.7.4 and 3.3.4 as follows:
public void commit(SubRequest<?> subRequest, MOTableRow row, MOTableRow changeSet, int column) {
Variable change = changeSet.getValue(column);
if (change == null) {
// no actual change for the row status -> nothing to do
subRequest.completed(); // <--- this row has to be added
return;
}
...
UPDATE: I needed to shift the release once again, because other fixes regarding Diffie Hellman key kickstart are pending and need to be included in this release. For that I need more time, but I am pretty sure that the release date on Wednesday is now final.