[infinispan-dev] keySet(), values() and entrySet() not implemented
Galder Zamarreno
galder.zamarreno at redhat.com
Thu Jun 4 05:15:44 EDT 2009
Mircea Markus wrote:
> 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.
I don't like the idea of having a public API method disabled by default.
Instead, I think we should warn users when calling these methods with
DIST mode on.
>
>>
>> Regards,
>
--
Galder Zamarreño
Sr. Software Maintenance Engineer
JBoss, a division of Red Hat
More information about the infinispan-dev
mailing list