コード例 #1
0
        internal virtual void CheckMyStoreIdAndMastersStoreId(StoreId myStoreId, URI masterUri)
        {
            ClusterMembers clusterMembers       = ResolveDatabaseDependency(typeof(ClusterMembers));
            InstanceId     serverId             = HighAvailabilityModeSwitcher.getServerId(masterUri);
            IEnumerable <ClusterMember> members = clusterMembers.Members;
            ClusterMember master = firstOrNull(filter(hasInstanceId(serverId), members));

            if (master == null)
            {
                throw new System.InvalidOperationException("Cannot find the master among " + members + " with master serverId=" + serverId + " and uri=" + masterUri);
            }

            StoreId masterStoreId = master.StoreId;

            if (!myStoreId.Equals(masterStoreId))
            {
                throw new MismatchingStoreIdException(myStoreId, master.StoreId);
            }
            else if (!myStoreId.EqualsByUpgradeId(master.StoreId))
            {
                throw new BranchedDataException("My store with " + myStoreId + " was updated independently from " + "master's store " + masterStoreId);
            }
        }