Wow. I think this is quite a big deal, going forward... I've never liked the existing behaviour, and it seems like you have very thoroughly worked around those issues.
I really look forward to finding some time to play with your newer version - but I just wanted to personally thank you for the amazing work. regards, Dawid Loubser On 01/11/2016 13:27, Peter Firmstone wrote: > I've finally got ServiceDiscoveryManager to a stage where I feel like it's > been completely brought up to date. > > Originally SDM's LookupCache had some latent race conditions that became > evident after I created a non blocking DynamicPolicyProvider. > > I spent some time refactoring it, I separated LookupCacheImpl from SDM, into > it's own file, but was never happy with remote method calls and filtering > being performed whist synchronized on a monitor. > > I've finally got it sorted nicely now, so it's much easier to understand. > I've used some Java 8 features like ConcurrentMap.computeIfPresent, but I'm > finally happy with it. > > Logging in SDM is now processed by a single threaded executor, so logging > doesn’t interfere with concurrency, yep it's a complex class and logging > helps you figure out what's going on. > > The best feature though, is utilising the new ServiceRegistrar default lookup > method. > > SDM's and LookupCache's api is unchanged, you just configure it how you want > it to behave. > > So if you want the existing slow insecure behaviour where you download > everything, authenticate and filter later you can keep doing that. > > However, if you want security and performance, with delayed unmarshalling, > don't want to download services you can't authenticate or your filter doesn’t > match locally using logical comparisons of attributes, you can do that too. > Because you only download what you want when you need it, performance is gr8. > > I've written a bunch of new tests too. I haven't committed the latest > changes. > > Oh and security doesn't require you to implement ProxyTrust (complex and > confusing), because the service is authenticated prior to download, not after. > > Cheers, > > Peter. > > Sent from my Samsung device. > >