Currently when a remote stream operation is performed it is always done using an entrySet. This causes a lot of overhead for keySet operations - especially if there is a store! We should support key based streams for remote nodes in addition to entry set.
There is nothing stopping this currently, all we should need is an additional argument for StreamIteratorRequestCommand to say if it is keyset or entry set. Then the LocalStreamManaterImpl and IteratorHandler need very minor tweaks. This should help operations such as size when using a store quite a bit depending on the store implementation.