Exemple #1
0
        /// <summary>
        /// Handles errors from the initial GSM operation prior to LSM operations.
        /// </summary>
        /// <param name="result">Operation result.</param>
        public override void HandleDoGlobalPreLocalExecuteError(IStoreResults result)
        {
            if (result.Result == StoreResult.ShardMapDoesNotExist)
            {
                // Remove shard map from cache.
                this.Manager.Cache.DeleteShardMap(_shardMap);
            }

            if (result.Result == StoreResult.MappingDoesNotExist)
            {
                foreach (IStoreMapping mappingSource in _mappingsSource.Select(m => m.Item1))
                {
                    // Remove mapping from cache.
                    this.Manager.Cache.DeleteMapping(mappingSource);
                }
            }

            // Possible errors are:
            // StoreResult.ShardMapDoesNotExist
            // StoreResult.ShardDoesNotExist
            // StoreResult.MappingRangeAlreadyMapped
            // StoreResult.MappingDoesNotExist
            // StoreResult.MappingLockOwnerIdDoesNotMatch
            // StoreResult.MappingIsNotOffline
            // StoreResult.StoreVersionMismatch
            // StoreResult.MissingParametersForStoredProcedure
            throw StoreOperationErrorHandler.OnShardMapperErrorGlobal(
                      result,
                      _shardMap,
                      _mappingsSource[0].Item1.StoreShard,
                      ShardManagementErrorCategory.RangeShardMap,
                      StoreOperationErrorHandler.OperationNameFromStoreOperationCode(this.OperationCode),
                      StoreOperationRequestBuilder.SpBulkOperationShardMappingsGlobalBegin);
        }
        /// <summary>
        /// Handles errors from the initial GSM operation prior to LSM operations.
        /// </summary>
        /// <param name="result">Operation result.</param>
        public override void HandleDoGlobalPreLocalExecuteError(IStoreResults result)
        {
            if (result.Result == StoreResult.ShardMapDoesNotExist)
            {
                // Remove shard map from cache.
                this.Manager.Cache.DeleteShardMap(_shardMap);
            }

            if (result.Result == StoreResult.MappingDoesNotExist)
            {
                // Remove mapping from cache.
                this.Manager.Cache.DeleteMapping(_mapping);
            }

            // Possible errors are:
            // StoreResult.ShardMapDoesNotExist
            // StoreResult.ShardDoesNotExist
            // StoreShard.MappingDoesNotExist
            // StoreResult.MappingLockOwnerIdDoesNotMatch
            // StoreResult.MappingIsNotOffline
            // StoreResult.StoreVersionMismatch
            // StoreResult.MissingParametersForStoredProcedure
            throw StoreOperationErrorHandler.OnShardMapperErrorGlobal(
                      result,
                      _shardMap,
                      _mapping.StoreShard,
                      _errorCategory,
                      StoreOperationErrorHandler.OperationNameFromStoreOperationCode(this.OperationCode),
                      StoreOperationRequestBuilder.SpBulkOperationShardMappingsGlobalBegin);
        }
 /// <summary>
 /// Handles errors from the GSM operation after the LSM operations.
 /// </summary>
 /// <param name="result">Operation result.</param>
 public override void HandleDoGlobalExecuteError(IStoreResults result)
 {
     if (_ssmCurrent == null)
     {
         // Possible errors are:
         // StoreResult.StoreVersionMismatch
         // StoreResult.MissingParametersForStoredProcedure
         throw StoreOperationErrorHandler.OnShardMapManagerErrorGlobal(
                   result,
                   null,
                   this.OperationName,
                   StoreOperationRequestBuilder.SpGetAllShardMapsGlobal);
     }
     else
     {
         if (result.Result != StoreResult.ShardMapDoesNotExist)
         {
             // Possible errors are:
             // StoreResult.StoreVersionMismatch
             // StoreResult.MissingParametersForStoredProcedure
             throw StoreOperationErrorHandler.OnShardMapperErrorGlobal(
                       result,
                       _ssmCurrent,
                       null, // shard
                       ShardManagementErrorCategory.ShardMapManager,
                       this.OperationName,
                       StoreOperationRequestBuilder.SpGetAllShardMappingsGlobal);
         }
     }
 }
Exemple #4
0
        /// <summary>
        /// Handles errors from the GSM operation after the LSM operations.
        /// </summary>
        /// <param name="result">Operation result.</param>
        public override void HandleDoGlobalExecuteError(IStoreResults result)
        {
            if (result.Result == StoreResult.ShardMapDoesNotExist)
            {
                // Remove shard map from cache.
                _shardMapManager.Cache.DeleteShardMap(_shardMap);
            }

            if (result.Result == StoreResult.MappingDoesNotExist)
            {
                Debug.Assert(_mapping != null);

                // Remove mapping from cache.
                _shardMapManager.Cache.DeleteMapping(_mapping);
            }

            // Possible errors are:
            // StoreResult.ShardMapDoesNotExist
            // StoreResult.MappingDoesNotExist
            // StoreResult.MappingAlreadyLocked
            // StoreResult.MappingLockOwnerIdMismatch
            // StoreResult.StoreVersionMismatch
            // StoreResult.MissingParametersForStoredProcedure
            throw StoreOperationErrorHandler.OnShardMapperErrorGlobal(
                      result,
                      _shardMap,
                      _mapping == null ? null : _mapping.StoreShard,
                      _errorCategory,
                      this.OperationName,
                      StoreOperationRequestBuilder.SpLockOrUnLockShardMappingsGlobal);
        }
 /// <summary>
 /// Handles errors from the GSM operation after the LSM operations.
 /// </summary>
 /// <param name="result">Operation result.</param>
 public override void HandleDoGlobalExecuteError(IStoreResults result)
 {
     // Possible errors are:
     // StoreResult.ShardMapDoesNotExist
     // StoreResult.MappingDoesNotExist
     // StoreResult.StoreVersionMismatch
     // StoreResult.MissingParametersForStoredProcedure
     throw StoreOperationErrorHandler.OnShardMapperErrorGlobal(
               result,
               _shardMap,
               _mapping.StoreShard, // shard
               _errorCategory,
               this.OperationName,
               StoreOperationRequestBuilder.SpFindShardMappingByIdGlobal);
 }
 /// <summary>
 /// Handles errors from the GSM operation after the LSM operations.
 /// </summary>
 /// <param name="result">Operation result.</param>
 public override void HandleDoGlobalExecuteError(IStoreResults result)
 {
     // Recovery manager handles the ShardMapDoesNotExist error properly, so we don't interfere.
     if (!_ignoreFailure || result.Result != StoreResult.ShardMapDoesNotExist)
     {
         // Possible errors are:
         // StoreResult.ShardMapDoesNotExist
         // StoreResult.ShardDoesNotExist
         // StoreResult.ShardVersionMismatch
         // StoreResult.StoreVersionMismatch
         // StoreResult.MissingParametersForStoredProcedure
         throw StoreOperationErrorHandler.OnShardMapperErrorGlobal(
                   result,
                   _shardMap,
                   _shard,
                   _errorCategory,
                   this.OperationName,
                   StoreOperationRequestBuilder.SpGetAllShardMappingsGlobal);
     }
 }
Exemple #7
0
        /// <summary>
        /// Handles errors from the undo of GSM operation after LSM operations.
        /// </summary>
        /// <param name="result">Operation result.</param>
        public override void HandleUndoGlobalPostLocalExecuteError(IStoreResults result)
        {
            if (result.Result == StoreResult.ShardMapDoesNotExist)
            {
                // Remove shard map from cache.
                this.Manager.Cache.DeleteShardMap(_shardMap);
            }

            // Possible errors are:
            // StoreResult.ShardMapDoesNotExist
            // StoreResult.StoreVersionMismatch
            // StoreResult.MissingParametersForStoredProcedure
            throw StoreOperationErrorHandler.OnShardMapperErrorGlobal(
                      result,
                      _shardMap,
                      _mappingsSource[0].Item1.StoreShard,
                      ShardManagementErrorCategory.RangeShardMap,
                      StoreOperationErrorHandler.OperationNameFromStoreOperationCode(this.OperationCode),
                      StoreOperationRequestBuilder.SpBulkOperationShardMappingsGlobalEnd);
        }
Exemple #8
0
 /// <summary>
 /// Handles errors from the GSM operation after the LSM operations.
 /// </summary>
 /// <param name="result">Operation result.</param>
 public override void HandleDoGlobalExecuteError(IStoreResults result)
 {
     // MappingNotFound for key is supposed to be handled in the calling layers
     // so that TryLookup vs Lookup have proper behavior.
     if (result.Result != StoreResult.MappingNotFoundForKey)
     {
         // Recovery manager handles the ShardMapDoesNotExist error properly, so we don't interfere.
         if (!_ignoreFailure || result.Result != StoreResult.ShardMapDoesNotExist)
         {
             // Possible errors are:
             // StoreResult.ShardMapDoesNotExist
             // StoreResult.StoreVersionMismatch
             // StoreResult.MissingParametersForStoredProcedure
             throw StoreOperationErrorHandler.OnShardMapperErrorGlobal(
                       result,
                       _shardMap,
                       null, // shard
                       _errorCategory,
                       this.OperationName,
                       StoreOperationRequestBuilder.SpFindShardMappingByKeyGlobal);
         }
     }
 }