I am embedding Clover 3.0.2 into a Java application. In my custom node, I wanted to use the logport that is defined in the Node class to write rejected data. The flow execution finishes successfully, but if I try to enable JMX monitoring I start getting NPE on PhaseTrackingDetail line 207.
After some digging, I've found that the problem is related to this class' nodesDetails attribute. This array is initialized with the the same size as the list of graph nodes (see line 63). When it is being populated, the TransformationGraphAnalyzer.nodesTopologicalSorting method is called to sort the nodes list. The problem is that when this method crawls through the nodes, it gets all output ports for all nodes, but it's not getting the log port. The result is that the PhaseTrackingDetail.nodesDetails attribute ends with some null values.
Would it be possible to fix it in a future release? It's a quick fix, it's only a matter of adding the log port to TransformationGraphAnalyzer.findSuccessiveNodes() method.
Another (related) question: shouldn't Node.closeAllOutputPorts() method call logPort.eof()?