Exemple #1
0
        /// <summary>
        /// Returns the proper ShardManagementException corresponding to given error code in
        /// <paramref name="result"/> for ShardMapper operations.
        /// </summary>
        /// <param name="result">Operation result object.</param>
        /// <param name="shardMapName">Name of shard map.</param>
        /// <param name="operationName">Operation being performed.</param>
        /// <param name="storedProcName">Stored procedure being executed.</param>
        /// <returns></returns>
        internal static ShardManagementException OnShardSchemaInfoErrorGlobal(
            IStoreResults result,
            string shardMapName,
            string operationName,
            string storedProcName)
        {
            switch (result.Result)
            {
            case StoreResult.SchemaInfoNameConflict:
                throw new SchemaInfoException(
                          SchemaInfoErrorCode.SchemaInfoNameConflict,
                          Errors._Store_SchemaInfo_NameConflict,
                          shardMapName);

            case StoreResult.SchemaInfoNameDoesNotExist:
                throw new SchemaInfoException(
                          SchemaInfoErrorCode.SchemaInfoNameDoesNotExist,
                          Errors._Store_SchemaInfo_NameDoesNotExist,
                          operationName,
                          shardMapName);

            case StoreResult.StoreVersionMismatch:
            case StoreResult.MissingParametersForStoredProcedure:
            default:
                return(StoreOperationErrorHandler.OnCommonErrorGlobal(
                           result,
                           operationName,
                           storedProcName));
            }
        }
Exemple #2
0
 /// <summary>
 /// Handles errors from the undo of GSM operation prior to LSM operations.
 /// </summary>
 /// <param name="result">Operation result.</param>
 public virtual void HandleUndoGlobalPreLocalExecuteError(IStoreResults result)
 {
     // Possible errors are:
     // StoreResult.StoreVersionMismatch
     // StoreResult.MissingParametersForStoredProcedure
     throw StoreOperationErrorHandler.OnCommonErrorGlobal(
               result,
               StoreOperationErrorHandler.OperationNameFromStoreOperationCode(this.OperationCode),
               StoreOperationRequestBuilder.SpFindAndUpdateOperationLogEntryByIdGlobal);
 }
Exemple #3
0
        /// <summary>
        /// Returns the proper ShardManagementException corresponding to given error code in
        /// <paramref name="result"/> for ShardMap operations.
        /// </summary>
        /// <param name="result">Operation result object.</param>
        /// <param name="shardMap">Shard map object.</param>
        /// <param name="shard">Shard object.</param>
        /// <param name="errorCategory">Error category to use for raised errors.</param>
        /// <param name="operationName">Operation being performed.</param>
        /// <param name="storedProcName">Stored procedure being executed.</param>
        /// <returns>ShardManagementException to be raised.</returns>
        internal static ShardManagementException OnRecoveryErrorGlobal(
            IStoreResults result,
            IStoreShardMap shardMap,
            IStoreShard shard,
            ShardManagementErrorCategory errorCategory,
            string operationName,
            string storedProcName)
        {
            switch (result.Result)
            {
            case StoreResult.ShardLocationExists:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.ShardLocationAlreadyExists,
                           Errors._Store_Shard_LocationAlreadyExistsGlobal,
                           shard.Location,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.ShardMapExists:
                Debug.Assert(shardMap != null);
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.ShardMapAlreadyExists,
                           Errors._Store_ShardMap_AlreadyExistsGlobal,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.StoreVersionMismatch:
            case StoreResult.MissingParametersForStoredProcedure:
            default:
                return(StoreOperationErrorHandler.OnCommonErrorGlobal(
                           result,
                           operationName,
                           storedProcName));
            }
        }
Exemple #4
0
        /// <summary>
        /// Returns the proper ShardManagementException corresponding to given error code in
        /// <paramref name="result"/> for ShardMap operations.
        /// </summary>
        /// <param name="result">Operation result object.</param>
        /// <param name="shardMap">Shard map object.</param>
        /// <param name="shard">Shard object.</param>
        /// <param name="errorCategory">Error category to use for raised errors.</param>
        /// <param name="operationName">Operation being performed.</param>
        /// <param name="storedProcName">Stored procedure being executed.</param>
        /// <returns>ShardManagementException to be raised.</returns>
        internal static ShardManagementException OnShardMapErrorGlobal(
            IStoreResults result,
            IStoreShardMap shardMap,
            IStoreShard shard,
            ShardManagementErrorCategory errorCategory,
            string operationName,
            string storedProcName)
        {
            switch (result.Result)
            {
            case StoreResult.ShardMapDoesNotExist:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.ShardMapDoesNotExist,
                           Errors._Store_ShardMap_DoesNotExistGlobal,
                           shardMap.Name,
                           storedProcName,
                           operationName,
                           shard != null ? shard.Location.ToString() : "*"));

            case StoreResult.ShardExists:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.ShardAlreadyExists,
                           Errors._Store_Shard_AlreadyExistsGlobal,
                           shard.Location,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.ShardLocationExists:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.ShardLocationAlreadyExists,
                           Errors._Store_Shard_LocationAlreadyExistsGlobal,
                           shard.Location,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.ShardDoesNotExist:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.ShardDoesNotExist,
                           Errors._Store_Shard_DoesNotExistGlobal,
                           shard.Location,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.ShardVersionMismatch:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.ShardVersionMismatch,
                           Errors._Store_Shard_VersionMismatchGlobal,
                           shard.Location,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.ShardHasMappings:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.ShardHasMappings,
                           Errors._Store_Shard_HasMappingsGlobal,
                           shard.Location,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.StoreVersionMismatch:
            case StoreResult.MissingParametersForStoredProcedure:
            default:
                return(StoreOperationErrorHandler.OnCommonErrorGlobal(
                           result,
                           operationName,
                           storedProcName));
            }
        }
Exemple #5
0
        /// <summary>
        /// Returns the proper ShardManagementException corresponding to given error code in
        /// <paramref name="result"/> for ShardMapper operations.
        /// </summary>
        /// <param name="result">Operation result object.</param>
        /// <param name="shardMap">Shard map object.</param>
        /// <param name="shard">Shard object.</param>
        /// <param name="errorCategory">Error category to use for raised errors.</param>
        /// <param name="operationName">Operation being performed.</param>
        /// <param name="storedProcName">Stored procedure being executed.</param>
        /// <returns>ShardManagementException to be raised.</returns>
        internal static ShardManagementException OnShardMapperErrorGlobal(
            IStoreResults result,
            IStoreShardMap shardMap,
            IStoreShard shard,
            ShardManagementErrorCategory errorCategory,
            string operationName,
            string storedProcName)
        {
            switch (result.Result)
            {
            case StoreResult.ShardMapDoesNotExist:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.ShardMapDoesNotExist,
                           Errors._Store_ShardMap_DoesNotExistGlobal,
                           shardMap.Name,
                           storedProcName,
                           operationName,
                           shard != null ? shard.Location.ToString() : "*"));

            case StoreResult.ShardDoesNotExist:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.ShardDoesNotExist,
                           Errors._Store_Shard_DoesNotExistGlobal,
                           shard.Location,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.ShardVersionMismatch:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.ShardVersionMismatch,
                           Errors._Store_Shard_VersionMismatchGlobal,
                           shard.Location,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.MappingDoesNotExist:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.MappingDoesNotExist,
                           Errors._Store_ShardMapper_MappingDoesNotExistGlobal,
                           shard.Location,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.MappingRangeAlreadyMapped:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.MappingRangeAlreadyMapped,
                           Errors._Store_ShardMapper_MappingPointOrRangeAlreadyMapped,
                           shard.Location,
                           shardMap.Name,
                           "Range",
                           storedProcName,
                           operationName));

            case StoreResult.MappingPointAlreadyMapped:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.MappingPointAlreadyMapped,
                           Errors._Store_ShardMapper_MappingPointOrRangeAlreadyMapped,
                           shard.Location,
                           shardMap.Name,
                           "Point",
                           storedProcName,
                           operationName));

            case StoreResult.MappingNotFoundForKey:
                Debug.Fail("MappingNotFoundForKey should not be raised during SqlOperation.");
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.MappingNotFoundForKey,
                           Errors._Store_ShardMapper_MappingNotFoundForKeyGlobal,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.MappingIsAlreadyLocked:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.MappingIsAlreadyLocked,
                           Errors._Store_ShardMapper_LockMappingAlreadyLocked,
                           shard.Location,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.MappingLockOwnerIdDoesNotMatch:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.MappingLockOwnerIdDoesNotMatch,
                           Errors._Store_ShardMapper_LockOwnerDoesNotMatch,
                           shard.Location,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.MappingIsNotOffline:
                return(new ShardManagementException(
                           errorCategory,
                           ShardManagementErrorCode.MappingIsNotOffline,
                           Errors._Store_ShardMapper_MappingIsNotOffline,
                           shard.Location,
                           shardMap.Name,
                           storedProcName,
                           operationName));

            case StoreResult.StoreVersionMismatch:
            case StoreResult.MissingParametersForStoredProcedure:
            default:
                return(StoreOperationErrorHandler.OnCommonErrorGlobal(
                           result,
                           operationName,
                           storedProcName));
            }
        }