#!/usr/bin/env bash

# Licensed to the LF AI & Data foundation under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

function filter_milvus_process() {
  awk '
    {
      pid = $1
      $1 = ""
      sub(/^[[:space:]]+/, "", $0)
      # Match Milvus commands, not tools/editors that mention the repo name.
      if ($0 ~ /^([^[:space:]]*\/)?milvus[[:space:]]+run[[:space:]]/) {
        print pid
      }
    }'
}

function get_milvus_process() {
  ps -e -o pid= -o args= | filter_milvus_process
}

function main() {
  echo "Stopping milvus..."
  PROCESS=$(get_milvus_process)
  if [ -z "$PROCESS" ]; then
    echo "No milvus process"
    exit 0
  fi
  kill -15 $PROCESS
  echo "Milvus stopped"
}

if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then
  main "$@"
fi
