Galder Zamarreno wrote:
Hi,
keySet(), values(), entrySet() do not seem to be implemented at the
moment:
public Set<K> keySet() {
throw new UnsupportedOperationException("TODO implement me"); //
TODO implement me
}
public Collection<V> values() {
throw new UnsupportedOperationException("TODO implement me"); //
TODO implement me
}
public Set<Map.Entry<K, V>> entrySet() {
throw new UnsupportedOperationException("TODO implement me"); //
TODO implement me
}
We should be implementing these methods, shouldn't we? Users might
want to iterate the map for example to print the contents or to verify
it contains what they put on it...etc.
I can't see a JIRA for it, so I'll open one so that this gets
implemented for Beta1 unless someone has any objections.
On IRC, Mircea said it might very costly, specially for dist, but we
still need it regardless, otherwise we're not fully implementing the
ConcurrentMap interface and these are commonly used methods.
for DIST these might
be implemented as follows:
-the node broadcasts a 'GetKeys' command to all others nodes in the cluster
- on remote nodes locks are acquired for all keys (not sure this
mandatory though)
- each node responds with the set of keys
- calling node puts them together and returns them to the user
for entrySet this is even more costly, as all cluster state shall be
transfered to the calling node.
Now, what worries me is the fact that users might overuse these methods,
without being aware of the performance consequences.
A possible way to enforce the users to acknowledge that these operations
are costly, is to disable them by default and allow a config element to
enable them.
Regards,