private void LogStats(AutoscalingConfigurationSet configuration, DynamoDbThroughput throughput, DynamoDbMetrics metrics)
        {
            var entityName = configuration.EntityName;
            var readsProvisioned = throughput.ReadThroughput;
            var writesProvisioned = throughput.WriteThroughput;
            var readsConsumed = metrics.ConsumedReadCapacityUnits;
            var writesConsumed = metrics.ConsumedWriteCapacityUnits;
            var readsPercent = readsConsumed.ToPercentage(readsProvisioned);
            var writesPercent = writesConsumed.ToPercentage(writesProvisioned);

            structuredLogger.Information(
                "{EntityName}:reads {ReadsConsumed}/{ReadsProvisioned},{ReadsPercent}%,->{ReadConsumptionDirection},{ReadThrottleEvents}",
                entityName, readsConsumed, readsProvisioned, readsPercent, metrics.ReadConsumptionDirection.ToString("F4"), metrics.ReadThrottleEvents);

            structuredLogger.Information(
                "{EntityName}:writes {WritesConsumed}/{WritesProvisioned},{WritesPercent}%,->{WriteConsumptionDirection},{WriteThrottleEvents}",
                entityName, writesConsumed, writesProvisioned, writesPercent, metrics.WriteConsumptionDirection.ToString("F4"), metrics.WriteThrottleEvents);
        }
 internal DynamoDbTableThroughput EnsureProvision(
     bool isCircuitBreakerTripped,
     DynamoDbTableThroughput provisioned,
     DynamoDbMetrics metrics,
     AutoscalingConfigurationSet configuration)
 {
     var updatedReads = EnsureProvision(isCircuitBreakerTripped, provisioned.ReadThroughput, metrics.ReadsThroughputMetrics, configuration.Reads);
     var updatedWrites = EnsureProvision(isCircuitBreakerTripped, provisioned.WriteThroughput, metrics.WritesThroughputMetrics, configuration.Writes);
     var updated = new DynamoDbTableThroughput { ReadThroughput = updatedReads, WriteThroughput = updatedWrites };
     return updated;
 }