/// <summary> /// Creates request to update a mapping in given shard map. /// </summary> /// <param name="operationCode">Operation code.</param> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationId">Operation Id.</param> /// <param name="undoStartState">Undo start state.</param> /// <param name="root">Xml representation of the object.</param> /// <param name="originalShardVersionRemoves">Original shard version for removes.</param> /// <param name="originalShardVersionAdds">Original shard version for adds.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateUpdateMappingOperation( StoreOperationCode operationCode, ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, XElement root, Guid originalShardVersionRemoves, Guid originalShardVersionAdds) { return(new UpdateMappingOperation( shardMapManager, operationId, undoStartState, operationCode, StoreObjectFormatterXml.ReadIStoreShardMap(root.Element("ShardMap")), StoreObjectFormatterXml.ReadIStoreMapping( root.Element("Steps").Element("Step").Element("Mapping"), root.Element("Removes").Element("Shard")), StoreObjectFormatterXml.ReadIStoreMapping( root.Element("Steps").Element("Step").Element("Update").Element("Mapping"), root.Element("Adds").Element("Shard")), root.Element("PatternForKill").Value, StoreObjectFormatterXml.ReadLock(root.Element("Steps").Element("Step").Element("Lock")), originalShardVersionRemoves, originalShardVersionAdds)); }
/// <summary> /// Creates request to add shard to given shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to add mapping.</param> /// <param name="mapping">Mapping to add.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateAddMappingOperation( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mapping) { return(new AddMappingOperation( shardMapManager, operationCode, shardMap, mapping)); }
/// <summary> /// Given an operation code, returns the corresponding operation name. /// </summary> /// <param name="operationCode">Operation code.</param> /// <returns>Operation name corresponding to given operation code.</returns> internal static string OperationNameFromStoreOperationCode(StoreOperationCode operationCode) { switch (operationCode) { case StoreOperationCode.AddShard: return("CreateShard"); case StoreOperationCode.RemoveShard: return("DeleteShard"); case StoreOperationCode.UpdateShard: return("UpdateShard"); case StoreOperationCode.AddPointMapping: return("AddPointMapping"); case StoreOperationCode.RemovePointMapping: return("RemovePointMapping"); case StoreOperationCode.UpdatePointMapping: return("UpdatePointMapping"); case StoreOperationCode.UpdatePointMappingWithOffline: return("UpdatePointMappingMarkOffline"); case StoreOperationCode.AddRangeMapping: return("AddRangeMapping"); case StoreOperationCode.RemoveRangeMapping: return("RemoveRangeMapping"); case StoreOperationCode.UpdateRangeMapping: return("UpdateRangeMapping"); case StoreOperationCode.UpdateRangeMappingWithOffline: return("UpdateRangeMappingMarkOffline"); case StoreOperationCode.SplitMapping: return("SplitMapping"); case StoreOperationCode.MergeMappings: return("MergeMappings"); case StoreOperationCode.AttachShard: return("AttachShard"); default: Debug.Fail("Unexpected operation code found."); return(String.Empty); } }
/// <summary> /// Creates request to add shard to given shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map from which to remove mapping.</param> /// <param name="mapping">Mapping to add.</param> /// <param name="lockOwnerId">Id of lock owner.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateRemoveMappingOperation( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mapping, Guid lockOwnerId) { return(new RemoveMappingOperation( shardMapManager, operationCode, shardMap, mapping, lockOwnerId)); }
/// <summary> /// Creates request to replace mappings within shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to update mapping.</param> /// <param name="mappingsSource">Original mappings.</param> /// <param name="mappingsTarget">Target mappings mapping.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateReplaceMappingsOperation( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, Tuple <IStoreMapping, Guid>[] mappingsSource, Tuple <IStoreMapping, Guid>[] mappingsTarget) { return(new ReplaceMappingsOperation( shardMapManager, operationCode, shardMap, mappingsSource, mappingsTarget)); }
/// <summary> /// Creates request to add shard to given shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to add mapping.</param> /// <param name="mapping">Mapping to add.</param> protected internal AddMappingOperation( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mapping) : this( shardMapManager, Guid.NewGuid(), StoreOperationState.UndoBegin, operationCode, shardMap, mapping, default(Guid)) { }
/// <summary> /// Creates request to replace mappings within shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to update mapping.</param> /// <param name="mappingsSource">Original mappings.</param> /// <param name="mappingsTarget">Target mappings mapping.</param> protected internal ReplaceMappingsOperation( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, Tuple <IStoreMapping, Guid>[] mappingsSource, Tuple <IStoreMapping, Guid>[] mappingsTarget) : this( shardMapManager, Guid.NewGuid(), StoreOperationState.UndoBegin, operationCode, shardMap, mappingsSource, mappingsTarget, default(Guid)) { }
/// <summary> /// Creates request to replace mappings within shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to update mapping.</param> /// <param name="mappingsSource">Original mappings.</param> /// <param name="mappingsTarget">Target mappings mapping.</param> protected internal ReplaceMappingsOperation( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, Tuple<IStoreMapping, Guid>[] mappingsSource, Tuple<IStoreMapping, Guid>[] mappingsTarget) : this( shardMapManager, Guid.NewGuid(), StoreOperationState.UndoBegin, operationCode, shardMap, mappingsSource, mappingsTarget, default(Guid)) { }
/// <summary> /// Constructs an instance of StoreOperation. /// </summary> /// <param name="shardMapManager">ShardMapManager object.</param> /// <param name="operationId">Operation Id.</param> /// <param name="undoStartState">State from which Undo operation starts.</param> /// <param name="opCode">Operation code.</param> /// <param name="originalShardVersionRemoves">Original shard version for removes.</param> /// <param name="originalShardVersionAdds">Original shard version for adds.</param> protected StoreOperation( ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, StoreOperationCode opCode, Guid originalShardVersionRemoves, Guid originalShardVersionAdds ) { this.Id = operationId; this.OperationCode = opCode; this.Manager = shardMapManager; this.UndoStartState = undoStartState; _operationState = StoreOperationState.DoBegin; _maxDoState = StoreOperationState.DoBegin; this.OriginalShardVersionRemoves = originalShardVersionRemoves; this.OriginalShardVersionAdds = originalShardVersionAdds; }
/// <summary> /// Creates request to add shard to given shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to update mapping.</param> /// <param name="mappingSource">Mapping to update.</param> /// <param name="mappingTarget">Updated mapping.</param> /// <param name="patternForKill">Pattern for kill commands.</param> /// <param name="lockOwnerId">Id of lock owner.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateUpdateMappingOperation( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mappingSource, IStoreMapping mappingTarget, string patternForKill, Guid lockOwnerId) { return(new UpdateMappingOperation( shardMapManager, operationCode, shardMap, mappingSource, mappingTarget, patternForKill, lockOwnerId)); }
/// <summary> /// Creates request to add a mapping in given shard map. /// </summary> /// <param name="operationCode">Operation code.</param> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationId">Operation Id.</param> /// <param name="undoStartState">Undo start state.</param> /// <param name="root">Xml representation of the object.</param> /// <param name="originalShardVersionAdds">Original shard version.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateAddMappingOperation( StoreOperationCode operationCode, ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, XElement root, Guid originalShardVersionAdds) { return(new AddMappingOperation( shardMapManager, operationId, undoStartState, operationCode, StoreObjectFormatterXml.ReadIStoreShardMap(root.Element("ShardMap")), StoreObjectFormatterXml.ReadIStoreMapping( root.Element("Steps").Element("Step").Element("Mapping"), root.Element("Adds").Element("Shard")), originalShardVersionAdds)); }
/// <summary> /// Creates request to replace mappings within shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationId">Operation id.</param> /// <param name="undoStartState">State from which Undo operation starts.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to update mapping.</param> /// <param name="mappingsSource">Original mappings.</param> /// <param name="mappingsTarget">Target mappings mapping.</param> /// <param name="originalShardVersionAdds">Original shard version on source.</param> internal ReplaceMappingsOperation( ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, StoreOperationCode operationCode, IStoreShardMap shardMap, Tuple <IStoreMapping, Guid>[] mappingsSource, Tuple <IStoreMapping, Guid>[] mappingsTarget, Guid originalShardVersionAdds) : base( shardMapManager, operationId, undoStartState, operationCode, originalShardVersionAdds, originalShardVersionAdds) { _shardMap = shardMap; _mappingsSource = mappingsSource; _mappingsTarget = mappingsTarget; }
/// <summary> /// Creates request to replace mappings within shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationId">Operation id.</param> /// <param name="undoStartState">State from which Undo operation starts.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to update mapping.</param> /// <param name="mappingsSource">Original mappings.</param> /// <param name="mappingsTarget">Target mappings mapping.</param> /// <param name="originalShardVersionAdds">Original shard version on source.</param> internal ReplaceMappingsOperation( ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, StoreOperationCode operationCode, IStoreShardMap shardMap, Tuple<IStoreMapping, Guid>[] mappingsSource, Tuple<IStoreMapping, Guid>[] mappingsTarget, Guid originalShardVersionAdds) : base( shardMapManager, operationId, undoStartState, operationCode, originalShardVersionAdds, originalShardVersionAdds) { _shardMap = shardMap; _mappingsSource = mappingsSource; _mappingsTarget = mappingsTarget; }
/// <summary> /// Creates request to add shard to given shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationId">Operation id.</param> /// <param name="undoStartState">State from which Undo operation starts.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to update mapping.</param> /// <param name="mappingSource">Mapping to update.</param> /// <param name="mappingTarget">Updated mapping.</param> /// <param name="patternForKill">Pattern for kill commands.</param> /// <param name="lockOwnerId">Id of lock owner.</param> /// <param name="originalShardVersionRemoves">Original shard version for removes.</param> /// <param name="originalShardVersionAdds">Original shard version for adds.</param> /// <param name="killConnection">Whether to kill open connections.</param> internal UpdateMappingOperation( ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mappingSource, IStoreMapping mappingTarget, string patternForKill, Guid lockOwnerId, Guid originalShardVersionRemoves, Guid originalShardVersionAdds, bool killConnection) : base( shardMapManager, operationId, undoStartState, operationCode, originalShardVersionRemoves, originalShardVersionAdds) { _shardMap = shardMap; _mappingSource = mappingSource; _mappingTarget = mappingTarget; _lockOwnerId = lockOwnerId; _errorCategory = (operationCode == StoreOperationCode.UpdateRangeMapping || operationCode == StoreOperationCode.UpdateRangeMappingWithOffline) ? ShardManagementErrorCategory.RangeShardMap : ShardManagementErrorCategory.ListShardMap; _updateLocation = _mappingSource.StoreShard.Id != _mappingTarget.StoreShard.Id; _fromOnlineToOffline = operationCode == StoreOperationCode.UpdatePointMappingWithOffline || operationCode == StoreOperationCode.UpdateRangeMappingWithOffline; _patternForKill = patternForKill; _killConnection = killConnection; }
/// <summary> /// Creates request to add shard to given shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationId">Operation id.</param> /// <param name="undoStartState">State from which Undo operation starts.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to add mapping.</param> /// <param name="mapping">Mapping to add.</param> /// <param name="originalShardVersionAdds">Original shard version.</param> internal AddMappingOperation( ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mapping, Guid originalShardVersionAdds) : base( shardMapManager, operationId, undoStartState, operationCode, default(Guid), originalShardVersionAdds) { _shardMap = shardMap; _mapping = mapping; _errorCategory = operationCode == StoreOperationCode.AddRangeMapping ? ShardManagementErrorCategory.RangeShardMap : ShardManagementErrorCategory.ListShardMap; }
/// <summary> /// Creates request to add shard to given shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to update mapping.</param> /// <param name="mappingSource">Mapping to update.</param> /// <param name="mappingTarget">Updated mapping.</param> /// <param name="patternForKill">Pattern for kill commands.</param> /// <param name="lockOwnerId">Id of lock owner.</param> protected internal UpdateMappingOperation( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mappingSource, IStoreMapping mappingTarget, string patternForKill, Guid lockOwnerId) : this( shardMapManager, Guid.NewGuid(), StoreOperationState.UndoBegin, operationCode, shardMap, mappingSource, mappingTarget, patternForKill, lockOwnerId, default(Guid), default(Guid)) { }
/// <summary> /// Creates request to replace a set of mappings with new set in given shard map. /// </summary> /// <param name="operationCode">Operation code.</param> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationId">Operation Id.</param> /// <param name="undoStartState">Undo start state.</param> /// <param name="root">Xml representation of the object.</param> /// <param name="originalShardVersionAdds">Original shard Id of source.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateReplaceMappingsOperation( StoreOperationCode operationCode, ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, XElement root, Guid originalShardVersionAdds) { XElement removeShard = root.Element("Removes").Element("Shard"); XElement addShard = root.Element("Adds").Element("Shard"); return(new ReplaceMappingsOperation( shardMapManager, operationId, undoStartState, operationCode, StoreObjectFormatterXml.ReadIStoreShardMap(root.Element("ShardMap")), root.Element("Steps").Elements("Step").Where(e => e.Attribute("Kind").Value == "1").Select( xe => new { Index = Int32.Parse(xe.Attribute("Id").Value), Mapping = StoreObjectFormatterXml.ReadIStoreMapping(xe.Element("Mapping"), removeShard), Lock = StoreObjectFormatterXml.ReadLock(xe.Element("Lock")) }) .OrderBy(el => el.Index) .Select(el => new Tuple <IStoreMapping, Guid>(el.Mapping, el.Lock)) .ToArray(), root.Element("Steps").Elements("Step").Where(e => e.Attribute("Kind").Value == "3").Select( xe => new { Index = Int32.Parse(xe.Attribute("Id").Value), Mapping = StoreObjectFormatterXml.ReadIStoreMapping(xe.Element("Mapping"), addShard), Lock = StoreObjectFormatterXml.ReadLock(xe.Element("Lock")) }) .OrderBy(el => el.Index) .Select(el => new Tuple <IStoreMapping, Guid>(el.Mapping, el.Lock)) .ToArray(), originalShardVersionAdds)); }
/// <summary> /// Creates request to add shard to given shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationId">Operation id.</param> /// <param name="undoStartState">State from which Undo operation starts.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map from which to remove mapping.</param> /// <param name="mapping">Mapping to add.</param> /// <param name="lockOwnerId">Id of lock owner.</param> /// <param name="originalShardVersionRemoves">Original shard version.</param> internal RemoveMappingOperation( ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mapping, Guid lockOwnerId, Guid originalShardVersionRemoves) : base( shardMapManager, operationId, undoStartState, operationCode, originalShardVersionRemoves, default(Guid)) { _shardMap = shardMap; _mapping = mapping; _lockOwnerId = lockOwnerId; _errorCategory = operationCode == StoreOperationCode.RemoveRangeMapping ? ShardManagementErrorCategory.RangeShardMap : ShardManagementErrorCategory.ListShardMap; }
/// <summary> /// Initializes a new instance /// </summary> public StubAddMappingOperation(ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mapping) : base(shardMapManager, operationCode, shardMap, mapping) { this.InitializeStub(); }
/// <summary> /// Request to update shard in given shard map in GSM. /// </summary> /// <param name="operationId">Operation Id</param> /// <param name="operationCode">Operation code.</param> /// <param name="undo">Whether this is an undo request.</param> /// <param name="shardMap">Shard map for which operation is being requested.</param> /// <param name="shardOld">Shard to update.</param> /// <param name="shardNew">Updated shard.</param> /// <returns>Xml formatted request.</returns> internal static XElement UpdateShardGlobal( Guid operationId, StoreOperationCode operationCode, bool undo, IStoreShardMap shardMap, IStoreShard shardOld, IStoreShard shardNew) { return new XElement( "BulkOperationShardsGlobal", StoreOperationRequestBuilder.OperationId(operationId), StoreOperationRequestBuilder.OperationCode(operationCode), StoreOperationRequestBuilder.Undo(undo), StoreOperationRequestBuilder.StepsCount(1), StoreOperationRequestBuilder.s_gsmVersion, StoreObjectFormatterXml.WriteIStoreShardMap("ShardMap", shardMap), new XElement("Steps", new XElement("Step", StoreOperationRequestBuilder.StepKind(StoreOperationStepKind.Update), new XAttribute("Id", 1), StoreObjectFormatterXml.WriteIStoreShard("Shard", shardOld), new XElement("Update", StoreObjectFormatterXml.WriteIStoreShard("Shard", shardNew))))); }
/// <summary> /// Initializes a new instance /// </summary> public StubUpdateMappingOperation(ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mappingSource, IStoreMapping mappingTarget, string patternForKill, Guid lockOwnerId) : base(shardMapManager, operationCode, shardMap, mappingSource, mappingTarget, patternForKill, lockOwnerId) { this.InitializeStub(); }
/// <summary> /// Sets the stub of StoreOperationFactory.CreateUpdateMappingOperation(ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mappingSource, IStoreMapping mappingTarget, String patternForKill, Guid lockOwnerId) /// </summary> public override IStoreOperation CreateUpdateMappingOperation(ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mappingSource, IStoreMapping mappingTarget, string patternForKill, Guid lockOwnerId) { Func<ShardMapManager, StoreOperationCode, IStoreShardMap, IStoreMapping, IStoreMapping, string, Guid, IStoreOperation> func1 = this.CreateUpdateMappingOperationShardMapManagerStoreOperationCodeIStoreShardMapIStoreMappingIStoreMappingStringGuid; if (func1 != null) return func1(shardMapManager, operationCode, shardMap, mappingSource, mappingTarget, patternForKill, lockOwnerId); if (this.___callBase) return base.CreateUpdateMappingOperation(shardMapManager, operationCode, shardMap, mappingSource, mappingTarget, patternForKill, lockOwnerId); return this.InstanceBehavior.Result<StubStoreOperationFactory, IStoreOperation>(this, "CreateUpdateMappingOperation"); }
/// <summary> /// Creates request to add shard to given shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map from which to remove mapping.</param> /// <param name="mapping">Mapping to add.</param> /// <param name="lockOwnerId">Id of lock owner.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateRemoveMappingOperation( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mapping, Guid lockOwnerId) { return new RemoveMappingOperation( shardMapManager, operationCode, shardMap, mapping, lockOwnerId); }
/// <summary> /// Given an operation code, returns the corresponding operation name. /// </summary> /// <param name="operationCode">Operation code.</param> /// <returns>Operation name corresponding to given operation code.</returns> internal static string OperationNameFromStoreOperationCode(StoreOperationCode operationCode) { switch (operationCode) { case StoreOperationCode.AddShard: return "CreateShard"; case StoreOperationCode.RemoveShard: return "DeleteShard"; case StoreOperationCode.UpdateShard: return "UpdateShard"; case StoreOperationCode.AddPointMapping: return "AddPointMapping"; case StoreOperationCode.RemovePointMapping: return "RemovePointMapping"; case StoreOperationCode.UpdatePointMapping: return "UpdatePointMapping"; case StoreOperationCode.UpdatePointMappingWithOffline: return "UpdatePointMappingMarkOffline"; case StoreOperationCode.AddRangeMapping: return "AddRangeMapping"; case StoreOperationCode.RemoveRangeMapping: return "RemoveRangeMapping"; case StoreOperationCode.UpdateRangeMapping: return "UpdateRangeMapping"; case StoreOperationCode.UpdateRangeMappingWithOffline: return "UpdateRangeMappingMarkOffline"; case StoreOperationCode.SplitMapping: return "SplitMapping"; case StoreOperationCode.MergeMappings: return "MergeMappings"; case StoreOperationCode.AttachShard: return "AttachShard"; default: Debug.Fail("Unexpected operation code found."); return String.Empty; } }
internal UpdateMappingOperationFailAfterLocalTarget( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mappingSource, IStoreMapping mappingTarget, string patternForKill, Guid lockOwnerId) : base(shardMapManager, operationCode, shardMap, mappingSource, mappingTarget, patternForKill, lockOwnerId) { }
internal RemoveMappingOperationFailAfterLocalTarget( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mapping, Guid lockOwnerId) : base(shardMapManager, operationCode, shardMap, mapping, lockOwnerId) { }
/// <summary> /// Initializes a new instance /// </summary> public StubReplaceMappingsOperation(ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, Tuple<IStoreMapping, Guid>[] mappingsSource, Tuple<IStoreMapping, Guid>[] mappingsTarget) : base(shardMapManager, operationCode, shardMap, mappingsSource, mappingsTarget) { this.InitializeStub(); }
/// <summary> /// Initializes a new instance /// </summary> public StubReplaceMappingsOperation(ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, Tuple <IStoreMapping, Guid>[] mappingsSource, Tuple <IStoreMapping, Guid>[] mappingsTarget) : base(shardMapManager, operationCode, shardMap, mappingsSource, mappingsTarget) { this.InitializeStub(); }
/// <summary> /// Creates request to add shard to given shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to update mapping.</param> /// <param name="mappingSource">Mapping to update.</param> /// <param name="mappingTarget">Updated mapping.</param> /// <param name="patternForKill">Pattern for kill commands.</param> /// <param name="lockOwnerId">Id of lock owner.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateUpdateMappingOperation( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mappingSource, IStoreMapping mappingTarget, string patternForKill, Guid lockOwnerId) { return new UpdateMappingOperation( shardMapManager, operationCode, shardMap, mappingSource, mappingTarget, patternForKill, lockOwnerId); }
public override IStoreOperation CreateUpdateMappingOperation(StoreOperationCode operationCode, ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, XElement root, Guid originalShardVersionRemoves, Guid originalShardVersionAdds) { Func<StoreOperationCode, ShardMapManager, Guid, StoreOperationState, XElement, Guid, Guid, IStoreOperation> func1 = this.CreateUpdateMappingOperationStoreOperationCodeShardMapManagerGuidStoreOperationStateXElementGuidGuid; if (func1 != null) return func1(operationCode, shardMapManager, operationId, undoStartState, root, originalShardVersionRemoves, originalShardVersionAdds); if (this.___callBase) return base.CreateUpdateMappingOperation(operationCode, shardMapManager, operationId, undoStartState, root, originalShardVersionRemoves, originalShardVersionAdds); return this.InstanceBehavior.Result<StubStoreOperationFactory, IStoreOperation>(this, "CreateUpdateMappingOperation"); }
/// <summary> /// Creates request to replace mappings within shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to update mapping.</param> /// <param name="mappingsSource">Original mappings.</param> /// <param name="mappingsTarget">Target mappings mapping.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateReplaceMappingsOperation( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, Tuple<IStoreMapping, Guid>[] mappingsSource, Tuple<IStoreMapping, Guid>[] mappingsTarget) { return new ReplaceMappingsOperation( shardMapManager, operationCode, shardMap, mappingsSource, mappingsTarget); }
/// <summary> /// Sets the stub of StoreOperationFactory.CreateReplaceMappingsOperation(ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, Tuple`2<IStoreMapping,Guid>[] mappingsSource, Tuple`2<IStoreMapping,Guid>[] mappingsTarget) /// </summary> public override IStoreOperation CreateReplaceMappingsOperation(ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, Tuple<IStoreMapping, Guid>[] mappingsSource, Tuple<IStoreMapping, Guid>[] mappingsTarget) { Func<ShardMapManager, StoreOperationCode, IStoreShardMap, Tuple<IStoreMapping, Guid>[], Tuple<IStoreMapping, Guid>[], IStoreOperation> func1 = this.CreateReplaceMappingsOperationShardMapManagerStoreOperationCodeIStoreShardMapTupleOfIStoreMappingGuidArrayTupleOfIStoreMappingGuidArray; if (func1 != null) return func1(shardMapManager, operationCode, shardMap, mappingsSource, mappingsTarget); if (this.___callBase) return base.CreateReplaceMappingsOperation(shardMapManager, operationCode, shardMap, mappingsSource, mappingsTarget); return this.InstanceBehavior.Result<StubStoreOperationFactory, IStoreOperation>(this, "CreateReplaceMappingsOperation"); }
/// <summary> /// Creates request to add a mapping in given shard map. /// </summary> /// <param name="operationCode">Operation code.</param> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationId">Operation Id.</param> /// <param name="undoStartState">Undo start state.</param> /// <param name="root">Xml representation of the object.</param> /// <param name="originalShardVersionAdds">Original shard version.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateAddMappingOperation( StoreOperationCode operationCode, ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, XElement root, Guid originalShardVersionAdds) { return new AddMappingOperation( shardMapManager, operationId, undoStartState, operationCode, StoreObjectFormatterXml.ReadIStoreShardMap(root.Element("ShardMap")), StoreObjectFormatterXml.ReadIStoreMapping( root.Element("Steps").Element("Step").Element("Mapping"), root.Element("Adds").Element("Shard")), originalShardVersionAdds); }
/// <summary> /// Initializes a new instance /// </summary> public StubRemoveMappingOperation(ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mapping, Guid lockOwnerId) : base(shardMapManager, operationCode, shardMap, mapping, lockOwnerId) { this.InitializeStub(); }
/// <summary> /// Creates request to update a mapping in given shard map. /// </summary> /// <param name="operationCode">Operation code.</param> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationId">Operation Id.</param> /// <param name="undoStartState">Undo start state.</param> /// <param name="root">Xml representation of the object.</param> /// <param name="originalShardVersionRemoves">Original shard version for removes.</param> /// <param name="originalShardVersionAdds">Original shard version for adds.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateUpdateMappingOperation( StoreOperationCode operationCode, ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, XElement root, Guid originalShardVersionRemoves, Guid originalShardVersionAdds) { return new UpdateMappingOperation( shardMapManager, operationId, undoStartState, operationCode, StoreObjectFormatterXml.ReadIStoreShardMap(root.Element("ShardMap")), StoreObjectFormatterXml.ReadIStoreMapping( root.Element("Steps").Element("Step").Element("Mapping"), root.Element("Removes").Element("Shard")), StoreObjectFormatterXml.ReadIStoreMapping( root.Element("Steps").Element("Step").Element("Update").Element("Mapping"), root.Element("Adds").Element("Shard")), root.Element("PatternForKill").Value, StoreObjectFormatterXml.ReadLock(root.Element("Steps").Element("Step").Element("Lock")), originalShardVersionRemoves, originalShardVersionAdds); }
/// <summary> /// Request to add shard to given shard map in GSM. /// </summary> /// <param name="operationId">Operation Id.</param> /// <param name="operationCode">Operation code.</param> /// <param name="undo">Whether this is an undo request.</param> /// <param name="shardMap">Shard map for which operation is being requested.</param> /// <param name="mapping">Mapping to add.</param> /// <returns>Xml formatted request.</returns> internal static XElement AddShardMappingGlobal( Guid operationId, StoreOperationCode operationCode, bool undo, IStoreShardMap shardMap, IStoreMapping mapping) { return new XElement( "BulkOperationShardMappingsGlobal", StoreOperationRequestBuilder.OperationId(operationId), StoreOperationRequestBuilder.OperationCode(operationCode), StoreOperationRequestBuilder.Undo(undo), StoreOperationRequestBuilder.StepsCount(1), StoreOperationRequestBuilder.s_gsmVersion, StoreObjectFormatterXml.WriteIStoreShardMap("ShardMap", shardMap), new XElement("Removes", StoreObjectFormatterXml.WriteIStoreShard("Shard", mapping.StoreShard)), new XElement("Adds", StoreObjectFormatterXml.WriteIStoreShard("Shard", mapping.StoreShard)), new XElement("Steps", new XElement("Step", new XAttribute("Id", 1), StoreOperationRequestBuilder.Validate(true), StoreOperationRequestBuilder.StepKind(StoreOperationStepKind.Add), StoreObjectFormatterXml.WriteIStoreMapping("Mapping", mapping)))); }
/// <summary> /// Adds OperationCode attribute. /// </summary> /// <param name="operationCode">Code of operation.</param> /// <returns>XAttribute for the operationCode.</returns> private static XAttribute OperationCode(StoreOperationCode operationCode) { return new XAttribute("OperationCode", (int)operationCode); }
internal NTimeFailingAddMappingOperation( int failureCountMax, ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mapping) : base(shardMapManager, operationCode, shardMap, mapping) { _failureCountMax = failureCountMax; _currentFailureCount = 0; }
/// <summary> /// Request to update mapping in given shard map in GSM. /// </summary> /// <param name="operationId">Operation Id.</param> /// <param name="operationCode">Operation code.</param> /// <param name="undo">Whether this is an undo request.</param> /// <param name="patternForKill">Pattern to use for kill connection.</param> /// <param name="shardMap">Shard map for which operation is being requested.</param> /// <param name="mappingSource">Shard to update.</param> /// <param name="mappingTarget">Updated shard.</param> /// <param name="lockOwnerId">Lock owner.</param> /// <returns>Xml formatted request.</returns> internal static XElement UpdateShardMappingGlobal( Guid operationId, StoreOperationCode operationCode, bool undo, string patternForKill, IStoreShardMap shardMap, IStoreMapping mappingSource, IStoreMapping mappingTarget, Guid lockOwnerId) { return new XElement( "BulkOperationShardMappingsGlobal", StoreOperationRequestBuilder.OperationId(operationId), StoreOperationRequestBuilder.OperationCode(operationCode), StoreOperationRequestBuilder.Undo(undo), StoreOperationRequestBuilder.StepsCount(1), StoreOperationRequestBuilder.s_gsmVersion, new XElement("PatternForKill", patternForKill), StoreObjectFormatterXml.WriteIStoreShardMap("ShardMap", shardMap), new XElement("Removes", StoreObjectFormatterXml.WriteIStoreShard("Shard", mappingSource.StoreShard)), new XElement("Adds", StoreObjectFormatterXml.WriteIStoreShard("Shard", mappingTarget.StoreShard)), new XElement("Steps", new XElement("Step", new XAttribute("Id", 1), StoreOperationRequestBuilder.Validate(false), StoreOperationRequestBuilder.StepKind(StoreOperationStepKind.Update), StoreObjectFormatterXml.WriteLock(lockOwnerId), StoreObjectFormatterXml.WriteIStoreMapping("Mapping", mappingSource), new XElement("Update", StoreObjectFormatterXml.WriteIStoreMapping("Mapping", mappingTarget))))); }
internal ReplaceMappingsOperationFailAfterLocalTarget( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, Tuple<IStoreMapping, Guid>[] mappingsSource, Tuple<IStoreMapping, Guid>[] mappingsTarget) : base(shardMapManager, operationCode, shardMap, mappingsSource, mappingsTarget) { }
/// <summary> /// Request to replace mappings in given shard map in GSM. /// </summary> /// <param name="operationId">Operation Id.</param> /// <param name="operationCode">Operation code.</param> /// <param name="undo">Whether this is an undo request.</param> /// <param name="shardMap">Shard map for which operation is being requested.</param> /// <param name="mappingsSource">Original mappings.</param> /// <param name="mappingsTarget">New mappings.</param> /// <returns>Xml formatted request.</returns> internal static XElement ReplaceShardMappingsGlobal( Guid operationId, StoreOperationCode operationCode, bool undo, IStoreShardMap shardMap, Tuple<IStoreMapping, Guid>[] mappingsSource, Tuple<IStoreMapping, Guid>[] mappingsTarget) { Debug.Assert(mappingsSource.Length > 0); Debug.Assert(mappingsTarget.Length > 0); return new XElement( "BulkOperationShardMappingsGlobal", StoreOperationRequestBuilder.OperationId(operationId), StoreOperationRequestBuilder.OperationCode(operationCode), StoreOperationRequestBuilder.Undo(undo), StoreOperationRequestBuilder.StepsCount(mappingsSource.Length + mappingsTarget.Length), StoreOperationRequestBuilder.s_gsmVersion, StoreObjectFormatterXml.WriteIStoreShardMap("ShardMap", shardMap), new XElement("Removes", StoreObjectFormatterXml.WriteIStoreShard("Shard", mappingsSource[0].Item1.StoreShard)), new XElement("Adds", StoreObjectFormatterXml.WriteIStoreShard("Shard", mappingsTarget[0].Item1.StoreShard)), new XElement("Steps", mappingsSource.Select((mapping, i) => new XElement("Step", StoreOperationRequestBuilder.Validate(false), StoreOperationRequestBuilder.StepKind(StoreOperationStepKind.Remove), new XAttribute("Id", i + 1), StoreObjectFormatterXml.WriteLock(mapping.Item2), StoreObjectFormatterXml.WriteIStoreMapping("Mapping", mapping.Item1))), mappingsTarget.Select((mapping, i) => new XElement("Step", StoreOperationRequestBuilder.Validate(false), StoreOperationRequestBuilder.StepKind(StoreOperationStepKind.Add), new XAttribute("Id", mappingsSource.Length + i + 1), StoreObjectFormatterXml.WriteLock(mapping.Item2), StoreObjectFormatterXml.WriteIStoreMapping("Mapping", mapping.Item1))))); }
internal AddMappingOperationFailAfterLocalTarget( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mapping) : base(shardMapManager, operationCode, shardMap, mapping) { }
/// <summary> /// Creates request to replace a set of mappings with new set in given shard map. /// </summary> /// <param name="operationCode">Operation code.</param> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationId">Operation Id.</param> /// <param name="undoStartState">Undo start state.</param> /// <param name="root">Xml representation of the object.</param> /// <param name="originalShardVersionAdds">Original shard Id of source.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateReplaceMappingsOperation( StoreOperationCode operationCode, ShardMapManager shardMapManager, Guid operationId, StoreOperationState undoStartState, XElement root, Guid originalShardVersionAdds) { XElement removeShard = root.Element("Removes").Element("Shard"); XElement addShard = root.Element("Adds").Element("Shard"); return new ReplaceMappingsOperation( shardMapManager, operationId, undoStartState, operationCode, StoreObjectFormatterXml.ReadIStoreShardMap(root.Element("ShardMap")), root.Element("Steps").Elements("Step").Where(e => e.Attribute("Kind").Value == "1").Select( xe => new { Index = Int32.Parse(xe.Attribute("Id").Value), Mapping = StoreObjectFormatterXml.ReadIStoreMapping(xe.Element("Mapping"), removeShard), Lock = StoreObjectFormatterXml.ReadLock(xe.Element("Lock")) }) .OrderBy(el => el.Index) .Select(el => new Tuple<IStoreMapping, Guid>(el.Mapping, el.Lock)) .ToArray(), root.Element("Steps").Elements("Step").Where(e => e.Attribute("Kind").Value == "3").Select( xe => new { Index = Int32.Parse(xe.Attribute("Id").Value), Mapping = StoreObjectFormatterXml.ReadIStoreMapping(xe.Element("Mapping"), addShard), Lock = StoreObjectFormatterXml.ReadLock(xe.Element("Lock")) }) .OrderBy(el => el.Index) .Select(el => new Tuple<IStoreMapping, Guid>(el.Mapping, el.Lock)) .ToArray(), originalShardVersionAdds); }
/// <summary> /// Creates request to add shard to given shard map. /// </summary> /// <param name="shardMapManager">Shard map manager object.</param> /// <param name="operationCode">Store operation code.</param> /// <param name="shardMap">Shard map for which to add mapping.</param> /// <param name="mapping">Mapping to add.</param> /// <returns>The store operation.</returns> public virtual IStoreOperation CreateAddMappingOperation( ShardMapManager shardMapManager, StoreOperationCode operationCode, IStoreShardMap shardMap, IStoreMapping mapping) { return new AddMappingOperation( shardMapManager, operationCode, shardMap, mapping); }