in projects/dataproc-trino-autoscaler/src/main/java/com/google/cloud/solutions/trinoscaler/gcp/DataprocInstanceShutdownService.java [150:202]
public void run() {
var instancesToDelete = new ArrayList<String>();
instanceTerminationQueue.drainTo(instancesToDelete);
if (instancesToDelete.isEmpty()) {
logger.atInfo().log("No workers to terminate");
return;
}
logger.atInfo().log("Terminating workers: %s", instancesToDelete);
try {
var dataprocInstanceDeleteRequest =
new Request.Builder()
.url(
HOSTNAME
+ String.format(
ENDPOINT,
clusterInformation.projectId(),
clusterInformation.region(),
clusterInformation.name()))
.post(
RequestBody.create(
JsonFormat.printer()
.print(
RepairClusterRequest.newBuilder()
.addNodePools(
NodePool.newBuilder()
.addAllInstanceNames(instancesToDelete)
.setId(NodePoolType.SECONDARY_WORKER_POOL)
.setRepairAction(RepairAction.DELETE))
.build()),
MediaType.get("application/json")))
.addHeader("Authorization", "Bearer " + credentialsProvider.create().getTokenValue())
.build();
try (var response =
okHttpClientFactory.create().newCall(dataprocInstanceDeleteRequest).execute()) {
logger.atInfo().log(
"Start Cluster repair delete for: %s %n Operation Id: %s",
instancesToDelete, response.body().string());
}
} catch (InvalidProtocolBufferException invalidProtoException) {
logger.atSevere().withCause(invalidProtoException).log("invalid proto during request");
} catch (IOException ioException) {
logger.atSevere().withCause(ioException).log(
"Error cluster repair-delete: %s", instancesToDelete);
instancesToDelete.forEach(instanceTerminationQueue::offer);
}
}