public void delete()

in src/main/java/org/opensearch/knn/indices/ModelDao.java [434:501]


        public void delete(String modelId, ActionListener<DeleteModelResponse> listener) {
            // If the index is not created, there is no need to delete the model
            if (!isCreated()) {
                logger.error("Cannot delete model \"" + modelId + "\". Model index "+ MODEL_INDEX_NAME + "does not exist.");
                String errorMessage = String.format("Cannot delete model \"%s\". Model index does not exist", modelId);
                listener.onResponse(new DeleteModelResponse(modelId, "failed", errorMessage));
                return;
            }

            // Setup delete model request
            DeleteRequestBuilder deleteRequestBuilder = new DeleteRequestBuilder(client, DeleteAction.INSTANCE,
                    MODEL_INDEX_NAME);
            deleteRequestBuilder.setId(modelId);
            deleteRequestBuilder.setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE);

            // On model deletion from the index, remove the model from all nodes' model cache
            ActionListener<DeleteResponse> onModelDeleteListener = ActionListener.wrap(deleteResponse -> {
                // If model is not deleted, return with error message
                if(deleteResponse.getResult() != DocWriteResponse.Result.DELETED) {
                    String errorMessage = String.format("Model \" %s \" does not exist", modelId);
                    listener.onResponse(new DeleteModelResponse(modelId, deleteResponse.getResult().getLowercase(),
                            errorMessage));
                    return;
                }

                // After model is deleted from the index, make sure the model is evicted from every cache in the
                // cluster
                client.execute(
                        RemoveModelFromCacheAction.INSTANCE,
                        new RemoveModelFromCacheRequest(modelId),
                        ActionListener.wrap(
                                removeModelFromCacheResponse -> {

                                    if (!removeModelFromCacheResponse.hasFailures()) {
                                        listener.onResponse(
                                                new DeleteModelResponse(
                                                        modelId,
                                                        deleteResponse.getResult().getLowercase(),
                                                        null
                                                )
                                        );
                                        return;
                                    }

                                    String failureMessage = buildRemoveModelErrorMessage(modelId,
                                            removeModelFromCacheResponse);

                                    listener.onResponse(new DeleteModelResponse(modelId, "failed",
                                            failureMessage));

                                }, e -> listener.onResponse(
                                        new DeleteModelResponse(modelId, "failed", e.getMessage())
                                )
                        )
                );
            }, e -> listener.onResponse(new DeleteModelResponse(modelId, "failed", e.getMessage())));

            // On model metadata removal, delete the model from the index
            ActionListener<AcknowledgedResponse> onMetadataUpdateListener = ActionListener.wrap(acknowledgedResponse ->
                            deleteRequestBuilder.execute(onModelDeleteListener), listener::onFailure);

            // Remove the metadata asynchronously
            client.execute(
                    UpdateModelMetadataAction.INSTANCE,
                    new UpdateModelMetadataRequest(modelId,  true, null),
                    onMetadataUpdateListener
            );
        }