Highly Available Objects

As mentioned in Managing Pools, redundant pools store HighlyAvailable objects. These objects are aware of the pool that owns them and have a connection to all the pool's members. One member (the highest priority in the pool) is in control of the object at any time. Because they have connections to all the pool members, if one goes down or is unreachable, they can activate that connection at any time with no loss of continuity.

ProxyMaster?

All HighlyAvailable objects have a proxy, which is an instance of ProxyMaster. This is a pb.Cacheable object which is sent along with the HA object when it is transmitted over the network. On the other end of the connection, it becomes the active ProxySlave stored in the cachedProxies array.

ProxySlave?

HighlyAvailable objects keep a list of ProxySlaves. One of which is active and the rest are inactive. These are cached from the pool members, and the active one will send updates which modify attributes on the HighlyAvailable object itself.