fun initTemplateMigration()

in src/main/kotlin/org/opensearch/indexmanagement/indexstatemanagement/ManagedIndexCoordinator.kt [529:567]


    fun initTemplateMigration(enableSetting: Long) {
        if (!templateMigrationEnabled) return
        if (!isIndexStateManagementEnabled()) return
        if (!clusterService.state().nodes().isLocalNodeElectedMaster) return
        scheduledTemplateMigration?.cancel()

        // if service has finished, re-enable it
        if (templateService.finishFlag) {
            logger.info("Re-enable template migration service.")
            templateService.reenableTemplateMigration()
        }

        val scheduledJob = Runnable {
            launch {
                try {
                    if (templateService.finishFlag) {
                        logger.info("ISM template migration process finished, cancel scheduled job.")
                        scheduledTemplateMigration?.cancel()
                        return@launch
                    }

                    logger.info("Performing ISM template migration.")
                    if (enableSetting == 0L) {
                        if (onMasterTimeStamp != 0L)
                            templateService.doMigration(Instant.ofEpochMilli(onMasterTimeStamp))
                        else {
                            logger.error("No valid onMaster time cached, cancel ISM template migration job.")
                            scheduledTemplateMigration?.cancel()
                        }
                    } else
                        templateService.doMigration(Instant.ofEpochMilli(enableSetting))
                } catch (e: Exception) {
                    logger.error("Failed to migrate ISM template", e)
                }
            }
        }

        scheduledTemplateMigration = threadPool.scheduleWithFixedDelay(scheduledJob, TimeValue.timeValueMinutes(1), executorName())
    }