geode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Udo Kohlmeyer <>
Subject Re: Geode Native - All your globals are belong to us
Date Fri, 11 Aug 2017 20:40:35 GMT
Awesome work!!!

On 8/11/17 13:23, Jacob Barrett wrote:
> In case you missed the big commit recently, the Geode Native components has
> removed all globals.*
> The biggest win here is that we can more easily unit test sections of the
> code that before was nearly impossible due to reliance on initialized
> global instances of Cache, DistributedSystem, PoolManager, etc. All long
> lived instances are children of Cache and have access to their "container"
> Cache for accessing other components like PoolManager, DistributedSystem,
> etc. The refactor probably isn't perfect but it is a step in the right
> direction. Look for more unit tests to come.
> The next big win is that you can truly have more than a single Cache
> instance in our process space. While this isn't a common intentional use
> case, it is common in the .NET client implementation since a single
> process, AppPool, could have several AppDomains each with their own
> instance of Cache. In the old model all managed Cache instances shared the
> singleton unmanaged Cache instance. This lead to confusion around
> configuring multiple Caches in the same AppPool, think session state
> provider and application lookaside caching in IIS, and restricted
> configuration to share the same cluster and configuration.
> Obviously this is a HUGE breaking change. Almost all source using the C++
> or .NET clients will need to be refactored. While many should be pretty
> obvious, look for updates coming to the examples soon to show you the light.
> This change follows the major change where we switch from the home grown
> SharedPtr/SharedBase refcounting memory management model to
> std::shared_ptr. The next major refactoring coming is aligning the public
> API with C++11 standards, like std::string, range-based for loops, etc. We
> also plan to make the API more consistent between factories, getters,
> setters, refs, pointers, etc.
> -Jake
> * Some lingering globals have been identified for removal.

View raw message