SNMP4J version 2.5.6 SNMP4J-Agent version 2.6.0 I have discovered the following behavior inconsistency where I would expect no error to be returned in both cases.
When a PDU is sent containing one SET of a row status to 6 for destroy for a row that exists the row is destroyed and no error is returned. Performing the same operation in a separate PDU for a row that does not exist again returns no error. When a PDU containing 2 SETs, one for a row that exists and one for a row that does not exist (both in the same table) a commit failed error is returned and the row that existed is destroyed. In the line highlighted below of DefaultMOTable the variable "row" has a null value when this event occurs and causes a null pointer exception. public void commit(SubRequest request) { OID cellOID = request.getVariableBinding().getOid(); MOTableCellInfo cell = getCellInfo(cellOID); MOMutableColumn col = (MOMutableColumn) getColumn(cell.getColumn()); if (logger.isDebugEnabled()) { logger.debug("Committing sub-request ("+ request.getVariableBinding()+") for column: "+col); } // Make sure changes are atomic -> sync whole table model synchronized (model) { R row; if (hasNewRows(request.getRequest())) { row = getNewRows(request.getRequest()).get(cell.getIndex()); // check if row has been added already if (!model.containsRow(row.getIndex())) { if (!addRow(row)) { request.setErrorStatus(PDU.resourceUnavailable); return; } } } else { row = model.getRow(cell.getIndex()); } -DonB _______________________________________________ SNMP4J mailing list SNMP4J@agentpp.org https://oosnmp.net/mailman/listinfo/snmp4j