From 1166389cb23afaa8ddfea3b2bac43b613e0b2ed6 Mon Sep 17 00:00:00 2001
From: fagongzi <zhangxu19830126@gmail.com>
Date: Wed, 21 Sep 2022 22:37:52 +0800
Subject: [PATCH] misc: remove standalone service mode (#5171)

Remove standalone service mode, and use launch to instead. usage:  ./mo-service -launch ./etc/launch-mem-engine/launch.toml

Approved by: @nnsgmsone
---
 cmd/mo-service/config.go                      | 14 ++--
 cmd/mo-service/main.go                        | 71 +------------------
 etc/launch-dist-tae/cn.toml                   | 34 +++++++++
 etc/launch-dist-tae/dn.toml                   | 31 ++++++++
 etc/launch-dist-tae/launch.toml               | 11 +++
 etc/launch-dist-tae/log.toml                  | 42 +++++++++++
 etc/launch-mem-engine/cn.toml                 | 31 ++++++++
 etc/launch-mem-engine/dn.toml                 | 37 ++++++++++
 etc/launch-mem-engine/launch.toml             | 11 +++
 .../log.toml}                                 |  6 +-
 10 files changed, 207 insertions(+), 81 deletions(-)
 create mode 100644 etc/launch-dist-tae/cn.toml
 create mode 100644 etc/launch-dist-tae/dn.toml
 create mode 100644 etc/launch-dist-tae/launch.toml
 create mode 100644 etc/launch-dist-tae/log.toml
 create mode 100644 etc/launch-mem-engine/cn.toml
 create mode 100644 etc/launch-mem-engine/dn.toml
 create mode 100644 etc/launch-mem-engine/launch.toml
 rename etc/{cn-standalone-mem-engine-test.toml => launch-mem-engine/log.toml} (89%)

diff --git a/cmd/mo-service/config.go b/cmd/mo-service/config.go
index bd1dc0b24..43c78e671 100644
--- a/cmd/mo-service/config.go
+++ b/cmd/mo-service/config.go
@@ -31,10 +31,9 @@ import (
 )
 
 const (
-	cnServiceType         = "CN"
-	dnServiceType         = "DN"
-	logServiceType        = "LOG"
-	standaloneServiceType = "STANDALONE"
+	cnServiceType  = "CN"
+	dnServiceType  = "DN"
+	logServiceType = "LOG"
 
 	s3FileServiceName    = "S3"
 	localFileServiceName = "LOCAL"
@@ -43,10 +42,9 @@ const (
 
 var (
 	supportServiceTypes = map[string]any{
-		cnServiceType:         cnServiceType,
-		dnServiceType:         dnServiceType,
-		logServiceType:        logServiceType,
-		standaloneServiceType: standaloneServiceType,
+		cnServiceType:  cnServiceType,
+		dnServiceType:  dnServiceType,
+		logServiceType: logServiceType,
 	}
 )
 
diff --git a/cmd/mo-service/main.go b/cmd/mo-service/main.go
index d7a7f25c2..9c34a54df 100644
--- a/cmd/mo-service/main.go
+++ b/cmd/mo-service/main.go
@@ -127,8 +127,6 @@ func startService(cfg *Config, stopper *stopper.Stopper) error {
 		return startDNService(cfg, stopper, fs)
 	case logServiceType:
 		return startLogService(cfg, stopper, fs, ts)
-	case standaloneServiceType:
-		return startStandalone(cfg, stopper, fs, ts)
 	default:
 		panic("unknown service type")
 	}
@@ -219,73 +217,6 @@ func startLogService(
 	})
 }
 
-func startStandalone(
-	cfg *Config,
-	stopper *stopper.Stopper,
-	fileService fileservice.FileService,
-	taskService taskservice.TaskService,
-) error {
-
-	// start log service
-	if err := startLogService(cfg, stopper, fileService, taskService); err != nil {
-		return err
-	}
-
-	// wait hakeeper ready
-	ctx, cancel := context.WithTimeout(context.TODO(), time.Second*30)
-	defer cancel()
-	var client logservice.CNHAKeeperClient
-	for {
-		var err error
-		client, err = logservice.NewCNHAKeeperClient(ctx, cfg.HAKeeperClient)
-		if moerr.IsMoErrCode(err, moerr.ErrNoHAKeeper) {
-			// not ready
-			logutil.Info("hakeeper not ready, retry")
-			time.Sleep(time.Second)
-			continue
-		}
-		if err != nil {
-			return err
-		}
-		break
-	}
-
-	// start DN
-	if err := startDNService(cfg, stopper, fileService); err != nil {
-		return err
-	}
-
-	// wait shard ready
-	for {
-		if ok, err := func() (bool, error) {
-			details, err := client.GetClusterDetails(ctx)
-			if err != nil {
-				return false, err
-			}
-			for _, store := range details.DNStores {
-				if len(store.Shards) > 0 {
-					return true, nil
-				}
-			}
-			logutil.Info("shard not ready")
-			return false, nil
-		}(); err != nil {
-			return err
-		} else if ok {
-			logutil.Info("shard ready")
-			break
-		}
-		time.Sleep(time.Second)
-	}
-
-	// start CN
-	if err := startCNService(cfg, stopper, fileService); err != nil {
-		return err
-	}
-
-	return nil
-}
-
 func initTraceMetric(ctx context.Context, cfg *Config, stopper *stopper.Stopper, fs fileservice.FileService) error {
 	var writerFactory export.FSWriterFactory
 	var err error
@@ -294,7 +225,7 @@ func initTraceMetric(ctx context.Context, cfg *Config, stopper *stopper.Stopper,
 
 	ServerType := strings.ToUpper(cfg.ServiceType)
 	switch ServerType {
-	case cnServiceType, standaloneServiceType:
+	case cnServiceType:
 		// validate node_uuid
 		var uuidErr error
 		var nodeUUID uuid.UUID
diff --git a/etc/launch-dist-tae/cn.toml b/etc/launch-dist-tae/cn.toml
new file mode 100644
index 000000000..387aa95e7
--- /dev/null
+++ b/etc/launch-dist-tae/cn.toml
@@ -0,0 +1,34 @@
+service-type = "CN"
+
+[log]
+level = "error"
+format = "json"
+max-size = 512
+
+[hakeeper-client]
+service-addresses = [
+  "127.0.0.1:32000",
+]
+
+[[fileservice]]
+name = "LOCAL"
+backend = "MEM"
+
+[[fileservice]]
+name = "S3"
+backend = "MEM"
+
+[[fileservice]]
+name = "ETL"
+backend = "DISK-ETL"
+data-dir = "mo-data/local/cn"
+
+[observability]
+disableTrace = true
+disableMetric = true
+
+[cn]
+uuid = "cn1"
+
+[cn.Engine]
+type = "distributed-tae"
diff --git a/etc/launch-dist-tae/dn.toml b/etc/launch-dist-tae/dn.toml
new file mode 100644
index 000000000..6797ce591
--- /dev/null
+++ b/etc/launch-dist-tae/dn.toml
@@ -0,0 +1,31 @@
+service-type = "DN"
+
+[log]
+level = "error"
+format = "json"
+max-size = 512
+
+[hakeeper-client]
+service-addresses = [
+  "127.0.0.1:32000",
+]
+
+
+[[fileservice]]
+name = "LOCAL"
+backend = "MEM"
+
+[[fileservice]]
+name = "S3"
+backend = "MEM"
+
+[[fileservice]]
+name = "ETL"
+backend = "DISK-ETL"
+data-dir = "mo-data/local/dn"
+
+[dn]
+uuid = "42"
+
+[dn.Txn.Storage]
+backend = "MEM"
diff --git a/etc/launch-dist-tae/launch.toml b/etc/launch-dist-tae/launch.toml
new file mode 100644
index 000000000..68ebe3c30
--- /dev/null
+++ b/etc/launch-dist-tae/launch.toml
@@ -0,0 +1,11 @@
+logservices = [
+    "./etc/launch-dist-tae/log.toml",
+]
+
+dnservices = [
+    "./etc/launch-dist-tae/dn.toml"
+]
+
+cnservices = [
+    "./etc/launch-dist-tae/cn.toml"
+]
\ No newline at end of file
diff --git a/etc/launch-dist-tae/log.toml b/etc/launch-dist-tae/log.toml
new file mode 100644
index 000000000..f885cd301
--- /dev/null
+++ b/etc/launch-dist-tae/log.toml
@@ -0,0 +1,42 @@
+service-type = "LOG"
+
+[log]
+level = "error"
+format = "json"
+max-size = 512
+
+[hakeeper-client]
+service-addresses = [
+  "127.0.0.1:32000",
+]
+
+
+[[fileservice]]
+name = "LOCAL"
+backend = "MEM"
+
+[[fileservice]]
+name = "S3"
+backend = "MEM"
+
+[[fileservice]]
+name = "ETL"
+backend = "DISK-ETL"
+data-dir = "mo-data/local/log"
+
+[logservice]
+deployment-id = 1
+uuid = "9c4dccb4-4d3c-41f8-b482-5251dc7a41bf"
+gossip-seed-addresses = [
+  "127.0.0.1:32002",
+]
+data-dir = "mo-data/logservice"
+
+[logservice.BootstrapConfig]
+bootstrap-cluster = true
+num-of-log-shards = 1
+num-of-dn-shards = 1
+num-of-log-shard-replicas = 1
+init-hakeeper-members = [
+  "131072:9c4dccb4-4d3c-41f8-b482-5251dc7a41bf",
+]
diff --git a/etc/launch-mem-engine/cn.toml b/etc/launch-mem-engine/cn.toml
new file mode 100644
index 000000000..b6062e854
--- /dev/null
+++ b/etc/launch-mem-engine/cn.toml
@@ -0,0 +1,31 @@
+service-type = "CN"
+
+[log]
+level = "debug"
+format = "json"
+max-size = 512
+
+[hakeeper-client]
+service-addresses = [
+  "127.0.0.1:32000",
+]
+
+[cn]
+uuid = "cn1"
+
+[cn.Engine]
+type = "memory"
+
+[[fileservice]]
+name = "LOCAL"
+backend = "MEM"
+
+[[fileservice]]
+name = "S3"
+backend = "MEM"
+
+[[fileservice]]
+name = "ETL"
+backend = "DISK-ETL"
+data-dir = "mo-data/etl/cn"
+
diff --git a/etc/launch-mem-engine/dn.toml b/etc/launch-mem-engine/dn.toml
new file mode 100644
index 000000000..9cf59b2ce
--- /dev/null
+++ b/etc/launch-mem-engine/dn.toml
@@ -0,0 +1,37 @@
+service-type = "DN"
+
+[log]
+level = "debug"
+format = "json"
+max-size = 512
+
+[hakeeper-client]
+service-addresses = [
+  "127.0.0.1:32000",
+]
+
+[cn]
+uuid = "cn1"
+
+[cn.Engine]
+type = "memory"
+
+[dn]
+uuid = "42"
+
+[dn.Txn.Storage]
+backend = "MEM"
+
+[[fileservice]]
+name = "LOCAL"
+backend = "MEM"
+
+[[fileservice]]
+name = "S3"
+backend = "MEM"
+
+[[fileservice]]
+name = "ETL"
+backend = "DISK-ETL"
+data-dir = "mo-data/etl/dn"
+
diff --git a/etc/launch-mem-engine/launch.toml b/etc/launch-mem-engine/launch.toml
new file mode 100644
index 000000000..dd16bea76
--- /dev/null
+++ b/etc/launch-mem-engine/launch.toml
@@ -0,0 +1,11 @@
+logservices = [
+    "./etc/launch-mem-engine/log.toml",
+]
+
+dnservices = [
+    "./etc/launch-mem-engine/dn.toml"
+]
+
+cnservices = [
+    "./etc/launch-mem-engine/cn.toml"
+]
\ No newline at end of file
diff --git a/etc/cn-standalone-mem-engine-test.toml b/etc/launch-mem-engine/log.toml
similarity index 89%
rename from etc/cn-standalone-mem-engine-test.toml
rename to etc/launch-mem-engine/log.toml
index 5ee937b12..f3b43597e 100644
--- a/etc/cn-standalone-mem-engine-test.toml
+++ b/etc/launch-mem-engine/log.toml
@@ -1,4 +1,4 @@
-service-type = "STANDALONE"
+service-type = "LOG"
 
 [log]
 level = "debug"
@@ -28,7 +28,7 @@ uuid = "9c4dccb4-4d3c-41f8-b482-5251dc7a41bf"
 gossip-seed-addresses = [
   "127.0.0.1:32002",
 ]
-data-dir = "store/logservice"
+data-dir = "mo-data/logservice"
 
 [logservice.BootstrapConfig]
 bootstrap-cluster = true
@@ -50,5 +50,5 @@ backend = "MEM"
 [[fileservice]]
 name = "ETL"
 backend = "DISK-ETL"
-data-dir = "store"
+data-dir = "mo-data/etl/log"
 
-- 
GitLab