if no change RowStatus column, SnmpRequest will stay in Request.PHASE_2PC_COMMIT

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:

  1. snmpset createAndGo' ---> it is treated asactive` and saved it in RowStatus column value
  2. 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.