private void delete() {
        IModelManager modelGetter = moduleManager.find(CoreModule.NAME).provider().getService(IModelManager.class);
        List<Model> models = modelGetter.allModels();

        List<RemoteInstance> remoteInstances = clusterNodesQuery.queryRemoteNodes();
        // Sort the instances as same as RemoteClientManager#refresh did.
        Collections.sort(remoteInstances);
        if (CollectionUtils.isNotEmpty(remoteInstances) && !remoteInstances.get(0).getAddress().isSelf()) {
            log.info(
                "The selected first getAddress is {}. The remove stage is skipped.",
                remoteInstances.get(0).toString()
            );
            return;
        }

        log.info("Beginning to remove expired metrics from the storage.");
        models.forEach(this::execute);
    }
DataTTLKeeperTimer starts in every OAP node, but the deletion only work when it is as the first node in the OAP
node list from {@link ClusterNodesQuery}.
oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/storage/ttl/DataTTLKeeperTimer.java