We restart subgraph block streams whenever new data sources were added in a block. Each stream creates a new chain head update listener. We try to shut the previous stream and update listener down ASAP but the connections don't seem to be cleaned up fast enough in some occasions.
This can be fixed by using a shared chain head update listener that all subgraphs on the node consume; this would only require a single extra connection for the entire node.