Repository: alibaba/GraphScope (language: python)

Issue:
Revisit the configuration file for Interactive.
Currently, the `engine_config.yaml` for Interactive contains some dummy configurations. Remove them


Discussion / hints:
And to avoid confusion, how about rename it as `interactive_config.yaml` or `interactive.yaml`?

Fix patch:
diff --git a/.github/workflows/interactive.yml b/.github/workflows/interactive.yml
index 67672dc66859..b30e3bdb4041 100644
--- a/.github/workflows/interactive.yml
+++ b/.github/workflows/interactive.yml
@@ -131,7 +131,7 @@ jobs:
         cp ${SCHEMA_FILE} ${TMP_INTERACTIVE_WORKSPACE}/data/modern_graph/graph.yaml
         GLOG_v=10 ./bin/bulk_loader -g ${SCHEMA_FILE} -l ${BULK_LOAD_FILE} -d ${TMP_INTERACTIVE_WORKSPACE}/data/modern_graph/indices/
         cd ${GITHUB_WORKSPACE}/flex/tests/hqps
-        bash hqps_admin_test.sh ${TMP_INTERACTIVE_WORKSPACE} ./engine_config_test.yaml ${GS_TEST_DIR}
+        bash hqps_admin_test.sh ${TMP_INTERACTIVE_WORKSPACE} ./interactive_config_test.yaml ${GS_TEST_DIR}
 
     - name: Build and test Interactive Java/Python SDK
       env: 
@@ -159,20 +159,20 @@ jobs:
         cp ${SCHEMA_FILE} ${TMP_INTERACTIVE_WORKSPACE}/data/modern_graph/graph.yaml
         GLOG_v=10 ./bin/bulk_loader -g ${SCHEMA_FILE} -l ${BULK_LOAD_FILE} -d ${TMP_INTERACTIVE_WORKSPACE}/data/modern_graph/indices/
         cd ${GITHUB_WORKSPACE}/flex/tests/hqps
-        sed -i 's/interactive_workspace/temp_workspace/g' ./engine_config_test.yaml
+        sed -i 's/interactive_workspace/temp_workspace/g' ./interactive_config_test.yaml
         # set thread_num_per_worker to 4
-        sed -i 's/thread_num_per_worker: 1/thread_num_per_worker: 4/g' ./engine_config_test.yaml
-        bash hqps_sdk_test.sh ${TMP_INTERACTIVE_WORKSPACE} ./engine_config_test.yaml java
-        bash hqps_sdk_test.sh ${TMP_INTERACTIVE_WORKSPACE} ./engine_config_test.yaml python
-        sed -i 's/temp_workspace/interactive_workspace/g' ./engine_config_test.yaml
-        sed -i 's/thread_num_per_worker: 4/thread_num_per_worker: 1/g' ./engine_config_test.yaml
+        sed -i 's/thread_num_per_worker: 1/thread_num_per_worker: 4/g' ./interactive_config_test.yaml
+        bash hqps_sdk_test.sh ${TMP_INTERACTIVE_WORKSPACE} ./interactive_config_test.yaml java
+        bash hqps_sdk_test.sh ${TMP_INTERACTIVE_WORKSPACE} ./interactive_config_test.yaml python
+        sed -i 's/temp_workspace/interactive_workspace/g' ./interactive_config_test.yaml
+        sed -i 's/thread_num_per_worker: 4/thread_num_per_worker: 1/g' ./interactive_config_test.yaml
   
     - name: Robustness test 
       env:
         INTERACTIVE_WORKSPACE: /tmp/interactive_workspace
       run: |
         cd ${GITHUB_WORKSPACE}/flex/tests/hqps
-        bash hqps_robust_test.sh ${INTERACTIVE_WORKSPACE} ./engine_config_test.yaml
+        bash hqps_robust_test.sh ${INTERACTIVE_WORKSPACE} ./interactive_config_test.yaml
 
     - name: Sample Query test
       env:
@@ -195,7 +195,7 @@ jobs:
         cd ${GITHUB_WORKSPACE}/flex/tests/hqps
         pip3 install argparse
         pip3 install neo4j
-        bash hqps_compiler_get_meta_test.sh ${INTERACTIVE_WORKSPACE} ./engine_config_test.yaml
+        bash hqps_compiler_get_meta_test.sh ${INTERACTIVE_WORKSPACE} ./interactive_config_test.yaml
 
     - name: Run codegen test.
       env:
@@ -203,7 +203,7 @@ jobs:
         INTERACTIVE_WORKSPACE: /tmp/interactive_workspace
       run: |
         cd ${GITHUB_WORKSPACE}/flex/tests/hqps
-        bash hqps_codegen_test.sh ${INTERACTIVE_WORKSPACE} ./engine_config_test.yaml ./engine_config_test_cbo.yaml
+        bash hqps_codegen_test.sh ${INTERACTIVE_WORKSPACE} ./interactive_config_test.yaml ./interactive_config_test_cbo.yaml
 
     - name: Test cypher&cpp procedure generation and loading
       env:
@@ -225,18 +225,18 @@ jobs:
         
         cd ${GITHUB_WORKSPACE}/flex/bin
         ./load_plan_and_gen.sh -e=hqps -i=../tests/interactive/plus_one.cc -w=/tmp/codegen \
-          --ir_conf=${GITHUB_WORKSPACE}/flex/tests/hqps/engine_config_test.yaml -o=${PLUGIN_DIR} \
+          --ir_conf=${GITHUB_WORKSPACE}/flex/tests/hqps/interactive_config_test.yaml -o=${PLUGIN_DIR} \
           --procedure_name=plus_one \
           --graph_schema_path=../interactive/examples/modern_graph/graph.yaml \
           --procedure_desc="This is test procedure, and the input is a number, and the output is the number plus one."
         
         ./load_plan_and_gen.sh -e=hqps -i=../interactive/sdk/java/src/test/resources/sample_app.cc -w=/tmp/codegen \
-          --ir_conf=${GITHUB_WORKSPACE}/flex/tests/hqps/engine_config_test.yaml -o=${PLUGIN_DIR} \
+          --ir_conf=${GITHUB_WORKSPACE}/flex/tests/hqps/interactive_config_test.yaml -o=${PLUGIN_DIR} \
           --procedure_name=sample_app \
           --graph_schema_path=../interactive/examples/modern_graph/graph.yaml
 
         ./load_plan_and_gen.sh -e=hqps -i=../interactive/examples/modern_graph/count_vertex_num.cypher -w=/tmp/codegen \
-          --ir_conf=${GITHUB_WORKSPACE}/flex/tests/hqps/engine_config_test.yaml  -o=${PLUGIN_DIR} \
+          --ir_conf=${GITHUB_WORKSPACE}/flex/tests/hqps/interactive_config_test.yaml  -o=${PLUGIN_DIR} \
           --procedure_name=count_vertex_num \
           --graph_schema_path=../interactive/examples/modern_graph/graph.yaml
         
@@ -245,14 +245,14 @@ jobs:
         # plus_one: (num: int64) -> (num: int64), CppEncoder
         # sample_app: (num: int64) -> (num: int64), kCypherJson
 
-        sed -i 's/default_graph: ldbc/default_graph: modern_graph/g' ${GITHUB_WORKSPACE}/flex/tests/hqps/engine_config_test.yaml
-        sed -i 's/interactive_workspace/temp_workspace/g' ${GITHUB_WORKSPACE}/flex/tests/hqps/engine_config_test.yaml
+        sed -i 's/default_graph: ldbc/default_graph: modern_graph/g' ${GITHUB_WORKSPACE}/flex/tests/hqps/interactive_config_test.yaml
+        sed -i 's/interactive_workspace/temp_workspace/g' ${GITHUB_WORKSPACE}/flex/tests/hqps/interactive_config_test.yaml
         cd ${GITHUB_WORKSPACE}/flex/tests/interactive/
         bash test_plugin_loading.sh ${TMP_INTERACTIVE_WORKSPACE} modern_graph \
-           ${GITHUB_WORKSPACE}/flex/tests/hqps/engine_config_test.yaml \
+           ${GITHUB_WORKSPACE}/flex/tests/hqps/interactive_config_test.yaml \
            ./modern_graph_schema_v0_0.yaml  ./modern_graph_schema_v0_1.yaml
-        sed -i 's/temp_workspace/interactive_workspace/g' ${GITHUB_WORKSPACE}/flex/tests/hqps/engine_config_test.yaml
-        sed -i 's/default_graph: modern_graph/default_graph: movies/g' ${GITHUB_WORKSPACE}/flex/tests/hqps/engine_config_test.yaml
+        sed -i 's/temp_workspace/interactive_workspace/g' ${GITHUB_WORKSPACE}/flex/tests/hqps/interactive_config_test.yaml
+        sed -i 's/default_graph: modern_graph/default_graph: movies/g' ${GITHUB_WORKSPACE}/flex/tests/hqps/interactive_config_test.yaml
       
     - name: Let compiler use latest interactive java sdk
       env:
@@ -275,10 +275,10 @@ jobs:
       run: |
         cd ${GITHUB_WORKSPACE}/flex/tests/hqps/
         export ENGINE_TYPE=hiactor
-        # change the default_graph config in ./engine_config_test.yaml to ldbc
-        sed -i 's/default_graph: movies/default_graph: ldbc/g' ./engine_config_test.yaml
+        # change the default_graph config in ./interactive_config_test.yaml to ldbc
+        sed -i 's/default_graph: movies/default_graph: ldbc/g' ./interactive_config_test.yaml
         bash hqps_adhoc_test.sh ${INTERACTIVE_WORKSPACE} ldbc \
-              ${GITHUB_WORKSPACE}/flex/tests/hqps/engine_config_test.yaml
+              ${GITHUB_WORKSPACE}/flex/tests/hqps/interactive_config_test.yaml
 
     - name: Run End-to-End cypher adhoc movie query test
       env:
@@ -289,10 +289,10 @@ jobs:
       run: |
         cd ${GITHUB_WORKSPACE}/flex/tests/hqps/
         export ENGINE_TYPE=hiactor
-        # change the default_graph config in ./engine_config_test.yaml to movies
-        sed -i 's/default_graph: ldbc/default_graph: movies/g' ./engine_config_test.yaml
+        # change the default_graph config in ./interactive_config_test.yaml to movies
+        sed -i 's/default_graph: ldbc/default_graph: movies/g' ./interactive_config_test.yaml
         bash hqps_adhoc_test.sh ${INTERACTIVE_WORKSPACE} movies \
-          ${GITHUB_WORKSPACE}/flex/tests/hqps/engine_config_test.yaml
+          ${GITHUB_WORKSPACE}/flex/tests/hqps/interactive_config_test.yaml
 
     - name: Run End-to-End cypher adhoc graph_algo query test
       env:
@@ -303,10 +303,10 @@ jobs:
       run: |
         cd ${GITHUB_WORKSPACE}/flex/tests/hqps/
         export ENGINE_TYPE=hiactor
-        # change the default_graph config in ${GS_TEST_DIR}/flex/ldbc-sf01-long-date/engine_config.yaml to graph_algo
-        sed -i 's/default_graph: movies/default_graph: graph_algo/g' ./engine_config_test.yaml
+        # change the default_graph config in ${GS_TEST_DIR}/flex/ldbc-sf01-long-date/interactive_config.yaml to graph_algo
+        sed -i 's/default_graph: movies/default_graph: graph_algo/g' ./interactive_config_test.yaml
         bash hqps_adhoc_test.sh ${INTERACTIVE_WORKSPACE} graph_algo \
-          ${GITHUB_WORKSPACE}/flex/tests/hqps/engine_config_test.yaml
+          ${GITHUB_WORKSPACE}/flex/tests/hqps/interactive_config_test.yaml
 
     - name: Run Gremlin test on modern graph
       env:
@@ -317,9 +317,9 @@ jobs:
       run: |
         cd ${GITHUB_WORKSPACE}/flex/tests/hqps/
         export ENGINE_TYPE=hiactor
-        sed -i 's/default_graph: graph_algo/default_graph: modern_graph/g' ./engine_config_test.yaml
+        sed -i 's/default_graph: graph_algo/default_graph: modern_graph/g' ./interactive_config_test.yaml
         bash hqps_adhoc_test.sh ${INTERACTIVE_WORKSPACE} modern_graph \
-          ${GITHUB_WORKSPACE}/flex/tests/hqps/engine_config_test.yaml gremlin
+          ${GITHUB_WORKSPACE}/flex/tests/hqps/interactive_config_test.yaml gremlin
 
   test-build-flex:
     runs-on: ubuntu-22.04
diff --git a/charts/graphscope-interactive/templates/_helpers.tpl b/charts/graphscope-interactive/templates/_helpers.tpl
index 0880da16567e..a77e42303686 100644
--- a/charts/graphscope-interactive/templates/_helpers.tpl
+++ b/charts/graphscope-interactive/templates/_helpers.tpl
@@ -156,14 +156,14 @@ Return the configmap with the graphscope configuration
 Return the engineConfigPath with the graphscope configuration
 */}}
 {{- define "graphscope-interactive.engineConfigPath" -}}
-/etc/interactive/engine_config.yaml
+/etc/interactive/interactive_config.yaml
 {{- end -}}
 
 {{/*
 Return the realEngineConfigPath with the graphscope configuration, templated by frontend
 */}}
 {{- define "graphscope-interactive.realEngineConfigPath" -}}
-/etc/interactive/real_engine_config.yaml
+/etc/interactive/real_interactive_config.yaml
 {{- end -}}
 
 {{/*
diff --git a/charts/graphscope-interactive/templates/configmap.yaml b/charts/graphscope-interactive/templates/configmap.yaml
index 6c4c8153495e..248ea2f14990 100644
--- a/charts/graphscope-interactive/templates/configmap.yaml
+++ b/charts/graphscope-interactive/templates/configmap.yaml
@@ -12,13 +12,7 @@ metadata:
   annotations: {{- include "graphscope-interactive.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
   {{- end }}
 data:
-  engine_config.yaml: |-
-    directories:
-      workspace: {{ .Values.workspace }}
-      subdirs:
-        data: data
-        logs: logs
-        conf: conf
+  interactive_config.yaml: |-
     log_level: {{ .Values.engine.logLevel  }}
     default_graph: {{ .Values.defaultGraph }}
     compute_engine:
diff --git a/charts/graphscope-interactive/templates/engine/statefulset.yaml b/charts/graphscope-interactive/templates/engine/statefulset.yaml
index f9455b53fd71..bf322194b0fa 100644
--- a/charts/graphscope-interactive/templates/engine/statefulset.yaml
+++ b/charts/graphscope-interactive/templates/engine/statefulset.yaml
@@ -59,7 +59,7 @@ spec:
             - -c
             - |
               echo "Starting engine..."
-              # first check engine_config.yaml exists
+              # first check interactive_config.yaml exists
               if [ ! -f ${ENGINE_CONFIG_PATH} ]; then
                 #error exit
                 echo "${ENGINE_CONFIG_PATH} not found, exiting..."
@@ -126,7 +126,7 @@ spec:
               mountPath: {{ .Values.workspace }}
             - name: config
               mountPath: {{ include "graphscope-interactive.engineConfigPath" . }}
-              subPath: engine_config.yaml
+              subPath: interactive_config.yaml
             - name: config
               mountPath: /etc/interactive/setup.sh
               subPath: setup.sh
diff --git a/charts/graphscope-interactive/templates/frontend/statefulset.yaml b/charts/graphscope-interactive/templates/frontend/statefulset.yaml
index 0f6885cb89c2..ef4ebd7f3c05 100644
--- a/charts/graphscope-interactive/templates/frontend/statefulset.yaml
+++ b/charts/graphscope-interactive/templates/frontend/statefulset.yaml
@@ -60,7 +60,7 @@ spec:
             - |
               echo "Starting frontend..."
               
-              # first check engine_config.yaml exists
+              # first check interactive_config.yaml exists
               if [ ! -f ${ENGINE_CONFIG_PATH} ]; then
                 #error exit
                 echo "${ENGINE_CONFIG_PATH} not found, exiting..."
@@ -72,7 +72,7 @@ spec:
                 echo "class path: ${COMPILER_CLASS_PATH} is empty, exiting..."
                 exit 1
               fi
-              # setup the template engine_config.yaml
+              # setup the template interactive_config.yaml
               bash /etc/interactive/setup.sh
               if [ ! -f ${REAL_ENGINE_CONFIG_PATH} ]; then
                 #error exit
@@ -124,7 +124,7 @@ spec:
               mountPath: {{ .Values.workspace }}
             - name: config
               mountPath: {{ include "graphscope-interactive.engineConfigPath" . }}
-              subPath: engine_config.yaml
+              subPath: interactive_config.yaml
             - name: config
               mountPath: /etc/interactive/setup.sh
               subPath: setup.sh
diff --git a/docs/flex/interactive/configuration.md b/docs/flex/interactive/configuration.md
index 60108b01bd8e..a75ca8396840 100644
--- a/docs/flex/interactive/configuration.md
+++ b/docs/flex/interactive/configuration.md
@@ -59,7 +59,7 @@ will initialize the service with its default settings. However, GraphScope is de
 To customize the service's settings, you can provide a YAML configuration file. This file allows you to specify various parameters, from directory paths to log levels, ensuring the service aligns with your requirements. To use a custom configuration, simply pass the YAML file to the command as follows:
 
 ```bash
-gsctl use GRAPH <name> -c ./engine_config.yaml
+gsctl use GRAPH <name> -c ./interactive_config.yaml
 ```
 
 Note: Please be aware that you're not required to configure every option. Simply adjust the settings that are relevant to your needs. Any options left unconfigured will automatically adopt their default values, as detailed in the sections that follow.
@@ -69,7 +69,7 @@ If you already have an Interactive service running and wish to apply a new set o
 
 To restart the service with your custom configuration, use the following command:
 ```bash
-gsctl service restart -c ./conf/engine_config.yaml
+gsctl service restart -c ./conf/interactive_config.yaml
 ```
 Remember, any changes made in the configuration file will only take effect after the service has been restarted with the updated file.
 
@@ -80,6 +80,7 @@ Here's a glimpse of what a typical YAML configuration file might look like:
 
 ```yaml
 log_level: INFO # default INFO
+verbose_level: 2 # verbose all logs above level 2(including)
 compute_engine:
   thread_num_per_worker: 1  # the number of shared workers, default 1
 compiler:
@@ -116,7 +117,8 @@ In this following table, we use the `.` notation to represent the hierarchy with
 
 | PropertyName       | Default   | Meaning |  Since Version |
 | --------           | --------  | -------- |-----------  |
-| log_level     |  INFO   | The level of database log, INFO/DEBUG/ERROR | 0.0.1 |
+| log_level     |  INFO   | The level of database log, INFO/WARNING/ERROR/FATAL | 0.0.1 |
+| verbose_level     |  0   | The verbose level of database log, should be a int | 0.0.3 |
 |default_graph  | modern | The name of default graph on which to start the graph service. | 0.0.1 |
 | compute_engine.thread_num_per_worker | 1 | The number of threads will be used to process the queries. Increase the number can benefit the query throughput | 0.0.1 |
 | compiler.planner.is_on | true | Determines if query optimization is enabled for compiling Cypher queries  | 0.0.1 |
diff --git a/flex/bin/interactive_server.cc b/flex/bin/interactive_server.cc
index ef7972887da5..1bb33d2e556e 100644
--- a/flex/bin/interactive_server.cc
+++ b/flex/bin/interactive_server.cc
@@ -138,6 +138,34 @@ void openDefaultGraph(const std::string workspace, int32_t thread_num,
             << default_graph;
 }
 
+void config_log_level(int log_level, int verbose_level) {
+  if (getenv("GLOG_minloglevel") != nullptr) {
+    FLAGS_stderrthreshold = atoi(getenv("GLOG_minloglevel"));
+  } else {
+    if (log_level == 0) {
+      FLAGS_minloglevel = 0;
+    } else if (log_level == 1) {
+      FLAGS_minloglevel = 1;
+    } else if (log_level == 2) {
+      FLAGS_minloglevel = 2;
+    } else if (log_level == 3) {
+      FLAGS_minloglevel = 3;
+    } else {
+      LOG(ERROR) << "Unsupported log level: " << log_level;
+    }
+  }
+
+  // If environment variable is set, we will use it
+  if (getenv("GLOG_v") != nullptr) {
+    FLAGS_v = atoi(getenv("GLOG_v"));
+  } else {
+    if (verbose_level >= 0) {
+      FLAGS_v = verbose_level;
+    } else {
+      LOG(ERROR) << "Unsupported verbose level: " << verbose_level;
+    }
+  }
+}
 }  // namespace gs
 
 /**
@@ -207,6 +235,9 @@ int main(int argc, char** argv) {
   service_config.memory_level = vm["memory-level"].as<unsigned>();
   service_config.enable_adhoc_handler = vm["enable-adhoc-handler"].as<bool>();
 
+  // Config log level
+  gs::config_log_level(service_config.log_level, service_config.verbose_level);
+
   auto& db = gs::GraphDB::get();
 
   if (vm["enable-trace"].as<bool>()) {
diff --git a/flex/engines/http_server/graph_db_service.cc b/flex/engines/http_server/graph_db_service.cc
index 21442759028b..a294cff9687d 100644
--- a/flex/engines/http_server/graph_db_service.cc
+++ b/flex/engines/http_server/graph_db_service.cc
@@ -45,7 +45,9 @@ ServiceConfig::ServiceConfig()
       start_compiler(false),
       enable_gremlin(false),
       enable_bolt(false),
-      metadata_store_type_(gs::MetadataStoreType::kLocalFile) {}
+      metadata_store_type_(gs::MetadataStoreType::kLocalFile),
+      log_level(DEFAULT_LOG_LEVEL),
+      verbose_level(DEFAULT_VERBOSE_LEVEL) {}
 
 const std::string GraphDBService::DEFAULT_GRAPH_NAME = "modern_graph";
 const std::string GraphDBService::DEFAULT_INTERACTIVE_HOME = "/opt/flex/";
diff --git a/flex/engines/http_server/graph_db_service.h b/flex/engines/http_server/graph_db_service.h
index fe329a7ce81b..d69e46f516b1 100644
--- a/flex/engines/http_server/graph_db_service.h
+++ b/flex/engines/http_server/graph_db_service.h
@@ -15,6 +15,7 @@
 #ifndef ENGINES_HTTP_SERVER_HQPS_SERVICE_H_
 #define ENGINES_HTTP_SERVER_HQPS_SERVICE_H_
 
+#include <cctype>
 #include <memory>
 #include <string>
 
@@ -32,7 +33,7 @@
 #include <boost/process.hpp>
 
 namespace server {
-/* Stored service configuration, read from engine_config.yaml
+/* Stored service configuration, read from interactive_config.yaml
  */
 struct ServiceConfig {
   static constexpr const uint32_t DEFAULT_SHARD_NUM = 1;
@@ -40,6 +41,9 @@ struct ServiceConfig {
   static constexpr const uint32_t DEFAULT_ADMIN_PORT = 7777;
   static constexpr const uint32_t DEFAULT_BOLT_PORT = 7687;
   static constexpr const uint32_t DEFAULT_GREMLIN_PORT = 8182;
+  static constexpr const uint32_t DEFAULT_VERBOSE_LEVEL = 0;
+  static constexpr const uint32_t DEFAULT_LOG_LEVEL =
+      0;  // 0 = INFO, 1 = WARNING, 2 = ERROR, 3 = FATAL
 
   // Those has default value
   uint32_t bolt_port;
@@ -58,6 +62,11 @@ struct ServiceConfig {
   bool enable_gremlin;
   bool enable_bolt;
   gs::MetadataStoreType metadata_store_type_;
+  // verbose log level. should be a int
+  // could also be set from command line: GLOG_v={}.
+  // If we found GLOG_v in the environment, we will at the first place.
+  int log_level;
+  int verbose_level;
 
   // Those has not default value
   std::string default_graph;
@@ -149,6 +158,35 @@ struct convert<server::ServiceConfig> {
       LOG(ERROR) << "ServiceConfig should be a map";
       return false;
     }
+    // log level: INFO=0, WARNING=1, ERROR=2, FATAL=3
+    if (config["log_level"]) {
+      auto level_str = gs::toUpper(config["log_level"].as<std::string>());
+
+      if (level_str == "INFO") {
+        service_config.log_level = 0;
+      } else if (level_str == "WARNING") {
+        service_config.log_level = 1;
+      } else if (level_str == "ERROR") {
+        service_config.log_level = 2;
+      } else if (level_str == "FATAL") {
+        service_config.log_level = 3;
+      } else {
+        LOG(ERROR) << "Unsupported log level: " << level_str;
+        return false;
+      }
+    } else {
+      LOG(INFO) << "log_level not found, use default value "
+                << service_config.log_level;
+    }
+
+    // verbose log level
+    if (config["verbose_level"]) {
+      service_config.verbose_level = config["verbose_level"].as<int>();
+    } else {
+      LOG(INFO) << "verbose_level not found, use default value "
+                << service_config.verbose_level;
+    }
+
     auto engine_node = config["compute_engine"];
     if (engine_node) {
       auto engine_type = engine_node["type"];
diff --git a/flex/engines/http_server/workdir_manipulator.cc b/flex/engines/http_server/workdir_manipulator.cc
index c64ea917115d..0d19bede4ed6 100644
--- a/flex/engines/http_server/workdir_manipulator.cc
+++ b/flex/engines/http_server/workdir_manipulator.cc
@@ -1285,7 +1285,7 @@ const std::string WorkDirManipulator::GRAPH_TEMP_INDICES_DIR_NAME =
     "temp_indices";
 const std::string WorkDirManipulator::GRAPH_PLUGIN_DIR_NAME = "plugins";
 const std::string WorkDirManipulator::CONF_ENGINE_CONFIG_FILE_NAME =
-    "engine_config.yaml";
+    "interactive_config.yaml";
 const std::string WorkDirManipulator::RUNNING_GRAPH_FILE_NAME = "RUNNING";
 const std::string WorkDirManipulator::TMP_DIR = "/tmp";
 const std::string WorkDirManipulator::GRAPH_LOADER_BIN = "bulk_loader";
diff --git a/flex/utils/service_utils.h b/flex/utils/service_utils.h
index a7f0f617ee1c..cf969b3845d0 100644
--- a/flex/utils/service_utils.h
+++ b/flex/utils/service_utils.h
@@ -19,6 +19,7 @@
 #include <sys/sysinfo.h>
 #include <sys/types.h>
 #include <unistd.h>
+#include <cctype>
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
@@ -47,6 +48,13 @@ inline int64_t GetCurrentTimeStamp() {
       .count();
 }
 
+inline std::string toUpper(const std::string str) {
+  std::string upper_str = str;
+  std::transform(upper_str.begin(), upper_str.end(), upper_str.begin(),
+                 ::toupper);
+  return upper_str;
+}
+
 // With the help of the following functions, we can serialize and deserialize
 // by json.get<PropertyType>() and operator <</operator =;
 // These two functions are inlined to avoid linking library in codegen.
diff --git a/k8s/dockerfiles/flex-interactive.Dockerfile b/k8s/dockerfiles/flex-interactive.Dockerfile
index f97250335559..e241a6127fab 100644
--- a/k8s/dockerfiles/flex-interactive.Dockerfile
+++ b/k8s/dockerfiles/flex-interactive.Dockerfile
@@ -108,11 +108,11 @@ COPY --from=builder /opt/graphscope/lib/libgrape-lite.so /opt/flex/lib/
 # copy the builtin graph, modern_graph
 RUN mkdir -p /opt/flex/share/gs_interactive_default_graph/
 COPY --from=builder /home/graphscope/GraphScope/flex/interactive/examples/modern_graph/* /opt/flex/share/gs_interactive_default_graph/
-COPY --from=builder /home/graphscope/GraphScope/flex/tests/hqps/engine_config_test.yaml /opt/flex/share/engine_config.yaml
+COPY --from=builder /home/graphscope/GraphScope/flex/tests/hqps/interactive_config_test.yaml /opt/flex/share/interactive_config.yaml
 COPY --from=builder /home/graphscope/GraphScope/k8s/dockerfiles/interactive-entrypoint.sh /opt/flex/bin/entrypoint.sh
 COPY --from=builder /home/graphscope/GraphScope/flex/third_party/nlohmann-json/single_include/* /opt/flex/include/
 RUN sed -i 's/name: modern_graph/name: gs_interactive_default_graph/g' /opt/flex/share/gs_interactive_default_graph/graph.yaml && \
-    sed -i 's/default_graph: modern_graph/default_graph: gs_interactive_default_graph/g' /opt/flex/share/engine_config.yaml
+    sed -i 's/default_graph: modern_graph/default_graph: gs_interactive_default_graph/g' /opt/flex/share/interactive_config.yaml
 
 # remove bin/run_app
 RUN rm -rf /opt/flex/bin/run_app
diff --git a/k8s/dockerfiles/interactive-entrypoint.sh b/k8s/dockerfiles/interactive-entrypoint.sh
index 6616f8ce15d1..74eb149b3118 100644
--- a/k8s/dockerfiles/interactive-entrypoint.sh
+++ b/k8s/dockerfiles/interactive-entrypoint.sh
@@ -49,9 +49,9 @@ function prepare_workspace() {
         echo "Workspace ${workspace} already exists"
         return 0
     fi
-    # prepare engine_config.yaml
-    engine_config_path="${workspace}/conf/engine_config.yaml"
-    cp /opt/flex/share/engine_config.yaml $engine_config_path
+    # prepare interactive_config.yaml
+    engine_config_path="${workspace}/conf/interactive_config.yaml"
+    cp /opt/flex/share/interactive_config.yaml $engine_config_path
     #make sure the line which start with default_graph is changed to default_graph: ${DEFAULT_GRAPH_NAME}
     sed -i "s/default_graph:.*/default_graph: ${DEFAULT_GRAPH_NAME}/" $engine_config_path
     echo "Using default graph: ${DEFAULT_GRAPH_NAME} to start the service"
@@ -78,7 +78,7 @@ function launch_service() {
         exit 1
     fi
     local workspace=$1
-    engine_config_path="${workspace}/conf/engine_config.yaml"
+    engine_config_path="${workspace}/conf/interactive_config.yaml"
     # start the service
     start_cmd="${INTERACTIVE_SERVER_BIN} -c ${engine_config_path}"
     start_cmd="${start_cmd} -w ${workspace}"


Test patch:
diff --git a/docs/flex/interactive/development/dev_and_test.md b/docs/flex/interactive/development/dev_and_test.md
index f7d3a6fb6e2c..8663b354c75a 100644
--- a/docs/flex/interactive/development/dev_and_test.md
+++ b/docs/flex/interactive/development/dev_and_test.md
@@ -143,10 +143,10 @@ Subsequently, execute the `hqps_admin_test.sh` script to test the of the interac
 ```bash
 cd ${GITHUB_WORKSPACE}/flex/tests/hqps
 # Change the default_graph field to 
-bash hqps_admin_test.sh ${TMP_INTERACTIVE_WORKSPACE} ./engine_config_test.yaml ${GS_TEST_DIR}
+bash hqps_admin_test.sh ${TMP_INTERACTIVE_WORKSPACE} ./interactive_config_test.yaml ${GS_TEST_DIR}
 ```
 
-The `engine_config_test.yaml` specifies the configuration for interactive services. 
+The `interactive_config_test.yaml` specifies the configuration for interactive services. 
 
 ```yaml 
 directories:
diff --git a/flex/tests/hqps/hqps_codegen_test.sh b/flex/tests/hqps/hqps_codegen_test.sh
index c0eedade8655..a0b460ab2f84 100644
--- a/flex/tests/hqps/hqps_codegen_test.sh
+++ b/flex/tests/hqps/hqps_codegen_test.sh
@@ -96,7 +96,7 @@ test_codegen_on_ldbc_rbo(){
 
 test_codegen_on_movie_rbo(){
     # test movie graph, 8,9,10 are not supported now
-    # change the default_graph config in ../tests/hqps/engine_config_test.yaml to movies
+    # change the default_graph config in ../tests/hqps/interactive_config_test.yaml to movies
     sed -i 's/default_graph: modern_graph/default_graph: movies/g' ${RBO_ENGINE_CONFIG_PATH}
     for i in 1 2 3 4 5 6 7 11 12 13 14 15;
     do
diff --git a/flex/tests/hqps/engine_config_test.yaml b/flex/tests/hqps/interactive_config_test.yaml
similarity index 89%
rename from flex/tests/hqps/engine_config_test.yaml
rename to flex/tests/hqps/interactive_config_test.yaml
index d4f1ab2f5864..0e1f9f15ed21 100644
--- a/flex/tests/hqps/engine_config_test.yaml
+++ b/flex/tests/hqps/interactive_config_test.yaml
@@ -1,10 +1,5 @@
-directories:
-  workspace: /tmp/interactive_workspace
-  subdirs:
-    data: data
-    logs: logs
-    conf: conf
 log_level: INFO
+verbose_level: 10
 default_graph: modern_graph
 compute_engine:
   type: hiactor
diff --git a/flex/tests/hqps/engine_config_test_cbo.yaml b/flex/tests/hqps/interactive_config_test_cbo.yaml
similarity index 89%
rename from flex/tests/hqps/engine_config_test_cbo.yaml
rename to flex/tests/hqps/interactive_config_test_cbo.yaml
index e180f341d1e0..fcb285cd5388 100644
--- a/flex/tests/hqps/engine_config_test_cbo.yaml
+++ b/flex/tests/hqps/interactive_config_test_cbo.yaml
@@ -1,9 +1,3 @@
-directories:
-  workspace: /tmp/interactive_workspace
-  subdirs:
-    data: data
-    logs: logs
-    conf: conf
 log_level: INFO
 default_graph: ldbc
 compute_engine:
diff --git a/interactive_engine/compiler/src/test/resources/config/gs_interactive_hiactor.yaml b/interactive_engine/compiler/src/test/resources/config/gs_interactive_hiactor.yaml
index 6176498157e8..bc703b2d32ff 100644
--- a/interactive_engine/compiler/src/test/resources/config/gs_interactive_hiactor.yaml
+++ b/interactive_engine/compiler/src/test/resources/config/gs_interactive_hiactor.yaml
@@ -1,11 +1,5 @@
 ---
 version: 0.0.1
-directories:
-  workspace: .
-  subdirs:
-    data: target/test-classes/config  # by default data, relative to ${workspace}
-    conf: conf # by default conf, relative to ${workspace}
-    logs: logs  # by default logs, relative to ${workspace}
 log_level: INFO # default INFO
 default_graph: modern  # configure the graph to be loaded while starting the service, if graph name not specified
 # may include other configuration items of other engines
diff --git a/interactive_engine/compiler/src/test/resources/config/gs_interactive_pegasus.yaml b/interactive_engine/compiler/src/test/resources/config/gs_interactive_pegasus.yaml
index bfb9dc7e8fe7..c2a9e1168c6c 100644
--- a/interactive_engine/compiler/src/test/resources/config/gs_interactive_pegasus.yaml
+++ b/interactive_engine/compiler/src/test/resources/config/gs_interactive_pegasus.yaml
@@ -1,11 +1,5 @@
 ---
 version: 0.0.1
-directories:
-  workspace: .
-  subdirs:
-    data: target/test-classes/config  # by default data, relative to ${workspace}
-    conf: conf # by default conf, relative to ${workspace}
-    logs: logs  # by default logs, relative to ${workspace}
 log_level: INFO # default INFO
 default_graph: modern  # configure the graph to be loaded while starting the service, if graph name not specified
 # may include other configuration items of other engines