/// <summary> /// Deletes the rows associated with the collection of SPIDs for the specified shardlet. /// </summary> /// <param name="shardlet">The shardlet.</param> /// <param name="spids">The spids.</param> public void Delete(Shardlet shardlet, IEnumerable <short> spids) { var array = spids.ToArray(); var batches = Enumerable.Range(0, array.Count()).GroupBy(i => i / BatchSize, i => array[i]); var partitionKey = shardlet.DistributionKey.ToString(CultureInfo.InvariantCulture); foreach (var batch in batches) { var batchOperation = new TableBatchOperation(); foreach (var spid in batch) { var rowKey = AzureShardletConnection.GetRowKey(shardlet.Catalog, spid); var entity = new DynamicTableEntity { RowKey = rowKey, PartitionKey = partitionKey, ETag = "*" }; batchOperation.Delete(entity); } RetryPolicyFactory.GetDefaultAzureStorageRetryPolicy() .ExecuteAction(() => _table.ExecuteBatch(batchOperation)); foreach (var spid in batch) { AzureCache.Remove(GetCacheKey(_cacheType, partitionKey, AzureShardletConnection.GetRowKey(shardlet.Catalog, spid))); } } }
/// <summary> /// Deletes the specified azure shardlet connection. /// </summary> /// <param name="azureShardletConnection">The azure shardlet connection.</param> public void Delete(AzureShardletConnection azureShardletConnection) { RetryPolicyFactory.GetDefaultAzureStorageRetryPolicy() .ExecuteAction(() => _table.Execute(TableOperation.Delete(azureShardletConnection))); AzureCache.Remove(GetCacheKey(_cacheType, azureShardletConnection)); }
/// <summary> /// Deletes the shardlet connections older than the specified UTC Date and Time. /// </summary> /// <param name="utcDateTime">The UTC date time.</param> public void Delete(DateTime utcDateTime) { var condition = TableQuery.GenerateFilterConditionForDate("Timestamp", QueryComparisons.LessThanOrEqual, utcDateTime); var query = new TableQuery() .Where(condition) .Select(new[] { "PartitionKey", "RowKey" }); var result = _table.ExecuteQuery(query).ToArray(); var array = result.ToArray(); var batches = Enumerable.Range(0, array.Count()).GroupBy(i => i / BatchSize, i => array[i]); foreach (var batch in batches) { var batchOperation = new TableBatchOperation(); foreach (var connection in batch) { var entity = new DynamicTableEntity { RowKey = connection.RowKey, PartitionKey = connection.PartitionKey, ETag = "*" }; batchOperation.Delete(entity); } RetryPolicyFactory.GetDefaultAzureStorageRetryPolicy() .ExecuteAction(() => _table.ExecuteBatch(batchOperation)); foreach (var connection in batch) { AzureCache.Remove(GetCacheKey(_cacheType, connection.PartitionKey, connection.RowKey)); } } }
/// <summary> /// Deletes the specified azure shardlet. /// </summary> /// <param name="azureShardlet">The azure shardlet.</param> public void Delete(AzureShardlet azureShardlet) { _table.Execute(TableOperation.Delete(azureShardlet)); AzureCache.Remove(GetCacheKey(_cacheType, azureShardlet)); }