in projects/alloydb-autoscaler/src/autoscaler-core/scaler/scaler-builder.ts [211:278]
async executeScalingRequest(
instance: ScalableInstanceWithData,
payloadLogger: pino.Logger,
stateStore: IStateStore,
suggestedSize: number
): Promise<string> {
const currentState = await stateStore.getState();
try {
const operationId = await this.scalerExecutor.scaleInstance(
instance,
suggestedSize
);
await stateStore.updateState({
...currentState,
scalingOperationId: operationId,
scalingRequestedSize: suggestedSize,
lastScalingTimestamp: Date.now(),
lastScalingCompleteTimestamp: null,
scalingPreviousSize: instance.metadata.currentSize,
scalingMethod: instance.scalingConfig.scalingMethod,
});
this.counterManager.incrementCounter(
SCALER_COUNTER_DEFINITION_MAP.SCALING_SUCCESS.counterName,
instance,
{
[COUNTER_ATTRIBUTE_NAMES.SCALING_METHOD]:
instance.scalingConfig.scalingMethod,
[COUNTER_ATTRIBUTE_NAMES.SCALING_DIRECTION]: getScalingDirection(
instance,
suggestedSize,
instance.metadata.currentSize
),
}
);
return 'SCALING';
} catch (e) {
payloadLogger.error({
message:
`----- ${instance.info.resourcePath}: ` +
`Unsuccessful scaling attempt: ${e}`,
err: e,
});
const scalingStatusReporter = new ScalingRequestReporter(
payloadLogger,
this.counterManager,
instance,
currentState,
suggestedSize
);
await scalingStatusReporter.reportFailedScalingOperation(`${e}`);
this.counterManager.incrementCounter(
SCALER_COUNTER_DEFINITION_MAP.SCALING_FAILED.counterName,
instance,
{
[COUNTER_ATTRIBUTE_NAMES.SCALING_FAILED_REASON]: e,
[COUNTER_ATTRIBUTE_NAMES.SCALING_METHOD]:
instance.scalingConfig.scalingMethod,
[COUNTER_ATTRIBUTE_NAMES.SCALING_DIRECTION]: getScalingDirection(
instance,
suggestedSize,
instance.metadata.currentSize
),
}
);
return 'SCALING_FAILURE';
}
}