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.
 

Reply via email to