The usual caveat, if we're changing public API's we can introduce the new ones and deprecate the old ones for removal in a subsequent major release.
-- Mike Stolz Principal Engineer, GemFire Product Lead Mobile: +1-631-835-4771 Download the new GemFire book here. <https://content.pivotal.io/ebooks/scaling-data-services-with-pivotal-gemfire> On Tue, Feb 20, 2018 at 8:02 PM, Jason Huynh <jhu...@pivotal.io> wrote: > While doing this work, it looks like we have an equivalent > unregisterInterest(K key) that accepts a List of keys or a single key. To > keep things consistent with registeringInterest, I propose that we > deprecate the behavior for passing in a list as the key and we introduce: > > unregisterInterestForKeys(Iterable keys) > > > On Fri, Dec 1, 2017 at 7:55 AM Anthony Baker <aba...@pivotal.io> wrote: > > > I think Dan’s suggestion clarifies the intent. > > > > Anthony > > > > > > > On Nov 30, 2017, at 3:54 PM, Dan Smith <dsm...@pivotal.io> wrote: > > > > > > I think it should be registerInterestAll(Iterable<T>keys) to mirror > > > Collection.addAll. > > > > > > I could easily see a user creating their own Tuple class or using one > > that > > > happens to also implement Iterable as their key. > > > > > > We're not doing a very good job of discouraging people to use iterable > > > objects as their key if they work everywhere else and then break with > > this > > > one API. > > > > > > -Dan > > > > > > On Thu, Nov 30, 2017 at 2:45 PM, John Blum <jb...@pivotal.io> wrote: > > > > > >> No, no... good question. > > >> > > >> I just think it would be wiser if users created a single, CompositeKey > > >> class type, with properly implements equals and hashCode methods, as I > > >> pointed out. > > >> > > >> I don't see any advantage in using a java.util.Collection as a key > over > > >> implementing a CompositeKey type. > > >> > > >> As such, anything we can do to discourage users from using Collection > > types > > >> as a key, I think is a good thing. > > >> > > >> > > >> On Thu, Nov 30, 2017 at 2:35 PM, Jason Huynh <jhu...@pivotal.io> > wrote: > > >> > > >>> Yeah I am not sure if anyone does it,and I don't think it would be a > > good > > >>> idea to use a collection as a key but just thought I'd ask the > > >> question... > > >>> > > >>> On Thu, Nov 30, 2017 at 2:33 PM John Blum <jb...@pivotal.io> wrote: > > >>> > > >>>> For instance, this came up recently... > > >>>> > > >>>> > > >>>> https://stackoverflow.com/questions/46551278/gemfire- > > >>> composite-key-pojo-as-gemfire-key > > >>>> > > >>>> I have seen other similar posts too! > > >>>> > > >>>> > > >>>> > > >>>> On Thu, Nov 30, 2017 at 2:30 PM, John Blum <jb...@pivotal.io> > wrote: > > >>>> > > >>>>> Does anyone actually do this in practice? If so, yikes! > > >>>>> > > >>>>> Even if the List is immutable, the elements may not be, so using a > > >> List > > >>>> as > > >>>>> a key starts to open 1 up to a lot of problems. > > >>>>> > > >>>>> As others have pointed out in SO and other channels, information > > >> should > > >>>>> not be kept in the key. > > >>>>> > > >>>>> It is perfect fine to have a "Composite" Key, but then define a > > >>>>> CompositeKey class type with properly implemented equals(:Object) > and > > >>>>> hashCode():int methods. > > >>>>> > > >>>>> For the most part, Keys should really only ever be simple Scalar > > >> values > > >>>>> (e.g. Long, String, etc). > > >>>>> > > >>>>> -j > > >>>>> > > >>>>> > > >>>>> > > >>>>> > > >>>>> On Thu, Nov 30, 2017 at 2:25 PM, Jason Huynh <jhu...@pivotal.io> > > >>> wrote: > > >>>>> > > >>>>>> I started work on the following plan: > > >>>>>> - deprecate current "ALL_KEYS" and List passing behavior in > > >>>>>> registerInterest > > >>>>>> () > > >>>>>> - add registerInterestForAllKeys(); > > >>>>>> - add registerInterest(T... keys) > > >>>>>> - add registerInterest(Iterable<T>keys) > > >>>>>> > > >>>>>> I might be missing something here but: > > >>>>>> With the addition of registerInterest(Iterable<T> keys), I think > we > > >>>> would > > >>>>>> not be able to register interest a List as the key itself. A list > > >>> would > > >>>>>> be > > >>>>>> iterated over due to the addition of registerInterest(Iterable<T> > > >>> keys). > > >>>>>> A > > >>>>>> list in a list would be passed into registerInterest and again be > > >>>> iterated > > >>>>>> over. I could change the newly created registerInterest call and > > >>>>>> explicitly name it something else or are we ok with Iterables not > > >>> being > > >>>>>> able to be registered as individual keys. > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> > > >>>>>> On Mon, Nov 20, 2017 at 9:05 AM Kirk Lund <kl...@apache.org> > wrote: > > >>>>>> > > >>>>>>> John's approach looks best for when you need to specify keys. > > >>>>>>> > > >>>>>>> For ALL_KEYS, what about an API that doesn't require a token or > > >> all > > >>>>>> keys: > > >>>>>>> > > >>>>>>> public void registerInterestForAllKeys(); > > >>>>>>> > > >>>>>>> On Fri, Nov 17, 2017 at 1:24 PM, Jason Huynh <jhu...@pivotal.io> > > >>>> wrote: > > >>>>>>> > > >>>>>>>> Thanks John for the clarification! > > >>>>>>>> > > >>>>>>>> On Fri, Nov 17, 2017 at 1:12 PM John Blum <jb...@pivotal.io> > > >>> wrote: > > >>>>>>>> > > >>>>>>>>> This... > > >>>>>>>>> > > >>>>>>>>>> The Iterable version would handle any collection type by > > >>> having > > >>>>>> the > > >>>>>>>> user > > >>>>>>>>> pass > > >>>>>>>>> in the iterator for the collection. > > >>>>>>>>> > > >>>>>>>>> Is not correct. > > >>>>>>>>> > > >>>>>>>>> The Collection<E> interface itself "extends" the > > >>>>>> java.lang.Iterable<E> > > >>>>>>>>> interface (see here... > > >>>>>>>>> > > >>>> https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html > > >>>>>>>> under > > >>>>>>>>> "*All > > >>>>>>>>> Superinterfaces*"). > > >>>>>>>>> > > >>>>>>>>> Therefore a user can simply to this... > > >>>>>>>>> > > >>>>>>>>> *List*<KeyType> keys = ... > > >>>>>>>>> > > >>>>>>>>> region.registerInterest(keys); *// calls the > > >>>>>>>>> Region.registerInterest(:Iterable<T>) method.* > > >>>>>>>>> > > >>>>>>>>> Alternatively, this would also be allowed... > > >>>>>>>>> > > >>>>>>>>> *Set*<KeyType> keys = ... > > >>>>>>>>> > > >>>>>>>>> region.registerInterest(keys); > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> On Fri, Nov 17, 2017 at 11:44 AM, Jason Huynh < > > >>> jhu...@pivotal.io> > > >>>>>>> wrote: > > >>>>>>>>> > > >>>>>>>>>> Current idea is to: > > >>>>>>>>>> - deprecate current "ALL_KEYS" and List passing behavior in > > >>>>>>>>>> registerInterest() > > >>>>>>>>>> - add registerInterestAllKeys(); > > >>>>>>>>>> - add registerInterest(T... keys) and > > >>>> registerInterest(Iterable<T> > > >>>>>>>> keys) > > >>>>>>>>>> and > > >>>>>>>>>> not have one specifically for List or specific collections. > > >>>>>>>>>> > > >>>>>>>>>> The Iterable version would handle any collection type by > > >>> having > > >>>>>> the > > >>>>>>>> user > > >>>>>>>>>> pass in the iterator for the collection. > > >>>>>>>>>> > > >>>>>>>>>> On Fri, Nov 17, 2017 at 11:32 AM Jacob Barrett < > > >>>>>> jbarr...@pivotal.io> > > >>>>>>>>>> wrote: > > >>>>>>>>>> > > >>>>>>>>>>> I am failing to see where registerInterest(List<T> keys) > > >> is > > >>> an > > >>>>>>> issue > > >>>>>>>>> for > > >>>>>>>>>>> the key type in the region. If our region is > > >> Region<String> > > >>>>>> then I > > >>>>>>>>> would > > >>>>>>>>>>> expect registerInterest(List<String>). If the keys are > > >>> unknown > > >>>>>> or a > > >>>>>>>> mix > > >>>>>>>>>>> then you should have Region<Object> and thus > > >>>>>>>>>> registerInterest(List<Object). > > >>>>>>>>>>> > > >>>>>>>>>>> I echo John's statements on VarArgs and type erasure as > > >> well > > >>>> as > > >>>>>> his > > >>>>>>>>>>> argument for Iterable<T>. > > >>>>>>>>>>> > > >>>>>>>>>>> Also, List<T> does not restrict you from List indexes. The > > >>>>>> region > > >>>>>>>> would > > >>>>>>>>>> be > > >>>>>>>>>>> Region<List<String>> with registerInterest<List<List<Str > > >>>>>> ing>>(). > > >>>>>>>>>>> > > >>>>>>>>>>> -Jake > > >>>>>>>>>>> > > >>>>>>>>>>> > > >>>>>>>>>>> On Fri, Nov 17, 2017 at 10:04 AM John Blum < > > >>> jb...@pivotal.io> > > >>>>>>> wrote: > > >>>>>>>>>>> > > >>>>>>>>>>>> Personally, I prefer the var args method > > >>>>>> (registerInterest(T... > > >>>>>>>>> keys)) > > >>>>>>>>>>>> myself. It is way more convenient if I only have a few > > >>> keys > > >>>>>> when > > >>>>>>>>>> calling > > >>>>>>>>>>>> this method then to have to add the keys to a List, > > >>>> especially > > >>>>>>> for > > >>>>>>>>>>> testing > > >>>>>>>>>>>> purposes. > > >>>>>>>>>>>> > > >>>>>>>>>>>> But, I typically like to pair that with a > > >>>>>>>>> registerInterest(Iterable<T> > > >>>>>>>>>>>> keys) method > > >>>>>>>>>>>> as well. By having a overloaded Iterable variant, then > > >> I > > >>>> can > > >>>>>>> pass > > >>>>>>>> in > > >>>>>>>>>> any > > >>>>>>>>>>>> Collection type I want (which shouldn't be restricted to > > >>>> just > > >>>>>>>> List). > > >>>>>>>>>> It > > >>>>>>>>>>>> also is a simple matter to convert any *Collection* > > >> (i.e. > > >>>>>> *List*, > > >>>>>>>>>> *Set*, > > >>>>>>>>>>>> etc) to an array, which can be passed to the var args > > >>>>>> method. By > > >>>>>>>>> using > > >>>>>>>>>>>> List, > > >>>>>>>>>>>> you are implying that "order matters" since a List is a > > >>>> order > > >>>>>>>>>> collection > > >>>>>>>>>>> of > > >>>>>>>>>>>> elements. > > >>>>>>>>>>>> > > >>>>>>>>>>>> This ("*It might even cause problems of pushing in > > >>>> **multiple > > >>>>>>>>> different > > >>>>>>>>>>>> types.*"), regarding var args, does not even make sense. > > >>>>>>>> Technically, > > >>>>>>>>>>>> List<T> is no different. Java's type erasure > > >> essentially > > >>>>>> equates > > >>>>>>>> var > > >>>>>>>>>>> args > > >>>>>>>>>>>> too "Object..." (or Object[]) and the List<T> to List > > >> (or > > >>> a > > >>>>>> List > > >>>>>>> of > > >>>>>>>>>>>> Objects, > > >>>>>>>>>>>> essentially like if you just did this... List<Object>) > > >> So, > > >>>>>> while > > >>>>>>>> the > > >>>>>>>>>>>> compiler ensures compile-time type-safety of generics, > > >>> there > > >>>>>> is > > >>>>>>> no > > >>>>>>>>>>> generics > > >>>>>>>>>>>> type-safety guarantees at runtime. > > >>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>>>>> On Fri, Nov 17, 2017 at 9:22 AM, Jason Huynh < > > >>>>>> jhu...@pivotal.io> > > >>>>>>>>>> wrote: > > >>>>>>>>>>>> > > >>>>>>>>>>>>> Hi Mike, > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> The current support for List leads to compilation > > >> issues > > >>>> if > > >>>>>> the > > >>>>>>>>>> region > > >>>>>>>>>>> is > > >>>>>>>>>>>>> type constrained. However I think you are suggesting > > >>>>>> instead > > >>>>>>> of > > >>>>>>>> a > > >>>>>>>>>> var > > >>>>>>>>>>>> args > > >>>>>>>>>>>>> method, instead provide a registerInterest(List keys) > > >>>>>> method? > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> So far what I am hearing requested is: > > >>>>>>>>>>>>> deprecate current "ALL_KEYS" and List passing behavior > > >>>>>>>>>>>>> registerInterestAllKeys(); > > >>>>>>>>>>>>> registerInterest(List<T> keys) instead of a > > >>>>>>> registerInterest(T... > > >>>>>>>>>> keys) > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> Will anyone ever actually have a List as the key > > >> itself? > > >>>> The > > >>>>>>>>> current > > >>>>>>>>>>> and > > >>>>>>>>>>>>> suggested changes would not allow it registering for a > > >>>>>> specific > > >>>>>>>>> List > > >>>>>>>>>>>>> object. > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> > > >>>>>>>>>>>>> On Thu, Nov 16, 2017 at 6:50 PM Jacob Barrett < > > >>>>>>>> jbarr...@pivotal.io > > >>>>>>>>>> > > >>>>>>>>>>>> wrote: > > >>>>>>>>>>>>> > > >>>>>>>>>>>>>> Geode Native C++ and .NET have: > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> virtual void registerKeys(const > > >>>>>>>>>>>>>> std::vector<std::shared_ptr<CacheableKey>> & keys, > > >>>>>>>>>>>>>> bool isDurable = false, > > >>>>>>>>>>>>>> bool getInitialValues = > > >>>> false, > > >>>>>>>>>>>>>> bool receiveValues = > > >>> true) = > > >>>>>> 0; > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> virtual void unregisterKeys(const > > >>>>>>>>>>>>>> std::vector<std::shared_ptr<CacheableKey>> & keys) > > >> = > > >>> 0; > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> virtual void *registerAllKeys*(bool isDurable = > > >>> false, > > >>>>>>>>>>>>>> bool > > >> getInitialValues = > > >>>>>> false, > > >>>>>>>>>>>>>> bool receiveValues = > > >>>> true) > > >>>>>> = > > >>>>>>> 0; > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> virtual void unregisterAllKeys() = 0; > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> virtual void registerRegex(const std::string& > > >> regex, > > >>>>>>>>>>>>>> bool isDurable = false, > > >>>>>>>>>>>>>> bool getInitialValues = > > >>>>>> false, > > >>>>>>>>>>>>>> bool receiveValues = > > >>> true) > > >>>> = > > >>>>>> 0; > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> virtual void unregisterRegex(const char* regex) = > > >> 0; > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> I dislike special values like this so yes please > > >> make > > >>> it > > >>>>>> go > > >>>>>>>> away! > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> -Jake > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>> On Thu, Nov 16, 2017 at 5:20 PM Dan Smith < > > >>>>>> dsm...@pivotal.io > > >>>>>>>> > > >>>>>>>>>> wrote: > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> I don't really like the regex option - it implies > > >>> that > > >>>>>> your > > >>>>>>>>> keys > > >>>>>>>>>>> are > > >>>>>>>>>>>>> all > > >>>>>>>>>>>>>>> strings. Will any other regular expressions work > > >> on > > >>>> non > > >>>>>>>> string > > >>>>>>>>>>>> objects? > > >>>>>>>>>>>>>>> registerInterestAllKeys() seems like a better > > >>> option. > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> -Dan > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> On Thu, Nov 16, 2017 at 4:34 PM, Michael Stolz < > > >>>>>>>>>> mst...@pivotal.io> > > >>>>>>>>>>>>>> wrote: > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> I don't like the vararg option. > > >>>>>>>>>>>>>>>> If i'm maintaining a list of keys i'm interested > > >>>> in, I > > >>>>>>> want > > >>>>>>>>> to > > >>>>>>>>>> be > > >>>>>>>>>>>>> able > > >>>>>>>>>>>>>> to > > >>>>>>>>>>>>>>>> pass that List in. > > >>>>>>>>>>>>>>>> Varargs is a poor substitute. It might even > > >> cause > > >>>>>>> problems > > >>>>>>>> of > > >>>>>>>>>>>> pushing > > >>>>>>>>>>>>>> in > > >>>>>>>>>>>>>>>> multiple different types. Keys must all be of > > >> one > > >>>> type > > >>>>>>> for > > >>>>>>>> a > > >>>>>>>>>>> given > > >>>>>>>>>>>>>>> Region. > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> I'm very much in favor of deprecating the > > >> ALL_KEYS > > >>>>>> string > > >>>>>>>> in > > >>>>>>>>>>> favor > > >>>>>>>>>>>> of > > >>>>>>>>>>>>>>>> something that is typed specially if you refer > > >> to > > >>>>>>> ALL_KEYS. > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> If that works, then we don't necessarily need > > >> the > > >>>>>>>> additional > > >>>>>>>>>> API > > >>>>>>>>>>>>>>>> registerInterestAllKeys(). But if ALL_KEYS can't > > >>> be > > >>>> a > > >>>>>>>> special > > >>>>>>>>>>> type > > >>>>>>>>>>>> to > > >>>>>>>>>>>>>> get > > >>>>>>>>>>>>>>>> over the compilation issues then we should go > > >> with > > >>>> the > > >>>>>>> new > > >>>>>>>>> API. > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> -- > > >>>>>>>>>>>>>>>> Mike Stolz > > >>>>>>>>>>>>>>>> Principal Engineer, GemFire Product Lead > > >>>>>>>>>>>>>>>> Mobile: +1-631-835-4771 <(631)%20835-4771> > > <(631)%20835-4771> > > >>>> <(631)%20835-4771> > > >>>>>>> <(631)%20835-4771> > > >>>>>>>>> <(631)%20835-4771> <(631)%20835-4771> > > >>>>>>>>>>> <(631)%20835-4771> > > >>>>>>>>>>>> <(631)%20835-4771> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> On Thu, Nov 16, 2017 at 7:02 PM, Anilkumar > > >>> Gingade < > > >>>>>>>>>>>>>> aging...@pivotal.io> > > >>>>>>>>>>>>>>>> wrote: > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> +1 Deprecating ALL_KEYS option; I believe this > > >>> is > > >>>>>> added > > >>>>>>>>>> before > > >>>>>>>>>>> we > > >>>>>>>>>>>>>>>> supported > > >>>>>>>>>>>>>>>>> regex support. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> Doesn't seems like a new API is needed. The > > >>> regex > > >>>>>> java > > >>>>>>>> doc > > >>>>>>>>>>>> clearly > > >>>>>>>>>>>>>>>>> specifies the effect of ".*". > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> +1 for deprecating list argument; and > > >> replacing > > >>>> with > > >>>>>>> new > > >>>>>>>>> API. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> -Anil. > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> On Thu, Nov 16, 2017 at 3:36 PM, Jason Huynh < > > >>>>>>>>>>> jhu...@pivotal.io> > > >>>>>>>>>>>>>>> wrote: > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> For GEODE-3813 < > > >>>>>>>>>>>> https://issues.apache.org/jira/browse/GEODE-3813 > > >>>>>>>>>>>>>> : > > >>>>>>>>>>>>>>>>> Region > > >>>>>>>>>>>>>>>>>> registerInterest API usage of type > > >> parameters > > >>> is > > >>>>>>> broken > > >>>>>>>>>>>>>>>>>> < > > >>>> https://issues.apache.org/jira/browse/GEODE-3813 > > >>>>>>> > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> The current API to registerInterest allows a > > >>>>>> special > > >>>>>>>>> string > > >>>>>>>>>>>> token > > >>>>>>>>>>>>>>>>>> “ALL_KEYS” to be passed in as the parameter > > >> to > > >>>>>>>>>>>> registerInterest(T > > >>>>>>>>>>>>>>> key). > > >>>>>>>>>>>>>>>>>> This special token causes the > > >> registerInterest > > >>>> to > > >>>>>>>> behave > > >>>>>>>>>>>> similar > > >>>>>>>>>>>>> to > > >>>>>>>>>>>>>>>>>> registerInterestRegex(“.*”). As the ticket > > >>>>>> states, > > >>>>>>> if > > >>>>>>>>> the > > >>>>>>>>>>>> region > > >>>>>>>>>>>>>> has > > >>>>>>>>>>>>>>>>> been > > >>>>>>>>>>>>>>>>>> typed to anything other than Object or > > >> String, > > >>>> the > > >>>>>>>> usage > > >>>>>>>>> of > > >>>>>>>>>>>>>>> “ALL_KEYS” > > >>>>>>>>>>>>>>>>> as a > > >>>>>>>>>>>>>>>>>> parameter results in a compilation error. > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> Proposals: > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> I would like to deprecate the special string > > >>>>>>> “ALL_KEYS” > > >>>>>>>>> and > > >>>>>>>>>>>>>> document > > >>>>>>>>>>>>>>> a > > >>>>>>>>>>>>>>>>>> workaround of using > > >>> registerInterestRegex(“.*”) > > >>>>>> or we > > >>>>>>>> can > > >>>>>>>>>>> add a > > >>>>>>>>>>>>> new > > >>>>>>>>>>>>>>> API > > >>>>>>>>>>>>>>>>>> called registerInterestAllKeys() > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> I think we should also deprecate passing a > > >>> List > > >>>>>>> Object > > >>>>>>>> of > > >>>>>>>>>>> keys > > >>>>>>>>>>>>> into > > >>>>>>>>>>>>>>>>>> registerInterest. It has the same > > >> compilation > > >>>>>>>>> restrictions > > >>>>>>>>>>> as > > >>>>>>>>>>>>>>>> “ALL_KEYS” > > >>>>>>>>>>>>>>>>>> when the region is key constrained/typed. > > >> The > > >>>>>> reason > > >>>>>>>> why > > >>>>>>>>>>> List > > >>>>>>>>>>>>>> would > > >>>>>>>>>>>>>>> be > > >>>>>>>>>>>>>>>>>> used is to allow registering multiple keys > > >> at > > >>>>>> once. > > >>>>>>>>>> Instead, > > >>>>>>>>>>>> we > > >>>>>>>>>>>>>> can > > >>>>>>>>>>>>>>>> add > > >>>>>>>>>>>>>>>>> a > > >>>>>>>>>>>>>>>>>> new var arg API like registerInterest(T… > > >>> keys). > > >>>>>> This > > >>>>>>>>>> problem > > >>>>>>>>>>>> and > > >>>>>>>>>>>>>>>>> solution > > >>>>>>>>>>>>>>>>>> was also documented in the ticket by the > > >>> ticket > > >>>>>>> creator > > >>>>>>>>>> (Kirk > > >>>>>>>>>>>>> Lund) > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> Thanks, > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>>> -Jason > > >>>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>>> > > >>>>>>>>>>>>>>> > > >>>>>>>>>>>>>> > > >>>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>>>>> > > >>>>>>>>>>>> -- > > >>>>>>>>>>>> -John > > >>>>>>>>>>>> john.blum10101 (skype) > > >>>>>>>>>>>> > > >>>>>>>>>>> > > >>>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> > > >>>>>>>>> -- > > >>>>>>>>> -John > > >>>>>>>>> john.blum10101 (skype) > > >>>>>>>>> > > >>>>>>>> > > >>>>>>> > > >>>>>> > > >>>>> > > >>>>> > > >>>>> > > >>>>> -- > > >>>>> -John > > >>>>> john.blum10101 (skype) > > >>>>> > > >>>> > > >>>> > > >>>> > > >>>> -- > > >>>> -John > > >>>> john.blum10101 (skype) > > >>>> > > >>> > > >> > > >> > > >> > > >> -- > > >> -John > > >> john.blum10101 (skype) > > >> > > > > >