hanahmily commented on code in PR #654:
URL:
https://github.com/apache/skywalking-banyandb/pull/654#discussion_r2059355182
##########
banyand/metadata/embeddedserver/server.go:
##########
@@ -103,3 +139,38 @@ func NewService(_ context.Context) (metadata.Service,
error) {
}
return s, nil
}
+
+func (s *server) RegisterDefrag(ctx context.Context) {
Review Comment:
```suggestion
func (s *server) registerDefrag() {
```
##########
banyand/metadata/embeddedserver/server.go:
##########
@@ -103,3 +139,38 @@ func NewService(_ context.Context) (metadata.Service,
error) {
}
return s, nil
}
+
+func (s *server) RegisterDefrag(ctx context.Context) {
+ var (
+ err error
+ etcdLogger = logger.GetLogger().Named("etcd-server")
+ defrag = func(_ time.Time, _ *logger.Logger) bool {
+ for _, endpoint := range s.listenClientURL {
+ _, err = s.ecli.Defragment(ctx, endpoint)
+ if err != nil {
+ etcdLogger.Error().Err(err).Msg("failed
to execute defragmentation")
+ return false
+ }
+ }
+ return true
+ }
+ )
+
+ if s.ecli == nil {
+ s.ecli, err = clientv3.New(clientv3.Config{
+ Endpoints: s.listenClientURL,
+ })
+ if err != nil {
+ etcdLogger.Error().Err(err).Msg("failed to create
client")
+ return
+ }
+ }
+ if s.scheduler == nil {
Review Comment:
```suggestion
```
##########
banyand/metadata/embeddedserver/server.go:
##########
@@ -48,8 +60,12 @@ func (s *server) Role() databasev1.Role {
func (s *server) FlagSet() *run.FlagSet {
fs := run.NewFlagSet("metadata")
fs.StringVar(&s.rootDir, "metadata-root-path", "/tmp", "the root path
of metadata")
+ fs.StringVar(&s.autoCompactionMode, "etcd-auto-compaction-mode",
"periodic", "auto compaction mode")
+ fs.StringVar(&s.autoCompactionRetention,
"etcd-auto-compaction-retention", "1h", "auto compaction retention")
+ fs.StringVar(&s.defragCron, "etcd-defrag-cron", "@daily",
"defragmentation to free up disk space")
Review Comment:
```suggestion
fs.StringVar(&s.autoCompactionMode, "etcd-auto-compaction-mode",
"periodic", "auto compaction mode: 'periodic' or 'revision'")
fs.StringVar(&s.autoCompactionRetention,
"etcd-auto-compaction-retention", "1h", "auto compaction retention: e.g. '1h',
'30m', '24h' for periodic; '1000' for revision")
fs.StringVar(&s.defragCron, "etcd-defrag-cron", "@daily",
"defragmentation cron: e.g. '@daily', '@hourly', '0 0 * * 0', '0 */6 * * *'")
```
##########
banyand/metadata/embeddedserver/server.go:
##########
@@ -81,12 +108,21 @@ func (s *server) PreRun(ctx context.Context) error {
}
func (s *server) Serve() run.StopNotify {
+ s.RegisterDefrag(context.Background())
_ = s.Service.Serve()
Review Comment:
```suggestion
_ = s.Service.Serve()
s.RegisterDefrag(context.Background())
```
##########
docs/operation/configuration.md:
##########
@@ -111,6 +111,10 @@ The following flags are used to configure the stream
storage engine:
The following flags are used to configure the embedded etcd storage engine
which is only used when running as a standalone server:
- `--metadata-root-path string`: The root path of metadata (default: "/tmp").
+- `--etcd-auto-compaction-mode string`: Auto compaction mode (default:
"periodic").
Review Comment:
Update comments
##########
banyand/metadata/embeddedserver/server.go:
##########
@@ -81,12 +108,21 @@ func (s *server) PreRun(ctx context.Context) error {
}
func (s *server) Serve() run.StopNotify {
+ s.RegisterDefrag(context.Background())
_ = s.Service.Serve()
return s.metaServer.StoppingNotify()
}
func (s *server) GracefulStop() {
s.Service.GracefulStop()
+ if s.ecli != nil {
+ _ = s.ecli.Close()
+ }
+ if s.scheduler != nil {
+ if !s.scheduler.Closed() {
+ s.scheduler.Close()
+ }
+ }
Review Comment:
```suggestion
if s.scheduler != nil {
s.scheduler.Close()
}
if s.ecli != nil {
_ = s.ecli.Close()
}
s.Service.GracefulStop()
```
##########
banyand/metadata/embeddedserver/server.go:
##########
@@ -103,3 +139,38 @@ func NewService(_ context.Context) (metadata.Service,
error) {
}
return s, nil
}
+
+func (s *server) RegisterDefrag(ctx context.Context) {
+ var (
+ err error
+ etcdLogger = logger.GetLogger().Named("etcd-server")
+ defrag = func(_ time.Time, _ *logger.Logger) bool {
+ for _, endpoint := range s.listenClientURL {
+ _, err = s.ecli.Defragment(ctx, endpoint)
+ if err != nil {
+ etcdLogger.Error().Err(err).Msg("failed
to execute defragmentation")
+ return false
+ }
+ }
+ return true
+ }
+ )
+
+ if s.ecli == nil {
Review Comment:
```suggestion
```
If `s.ecli` is nil, it indicates that there is a bug present. You should
notify it immediately.
##########
banyand/metadata/embeddedserver/server.go:
##########
@@ -103,3 +139,38 @@ func NewService(_ context.Context) (metadata.Service,
error) {
}
return s, nil
}
+
+func (s *server) RegisterDefrag(ctx context.Context) {
+ var (
+ err error
+ etcdLogger = logger.GetLogger().Named("etcd-server")
+ defrag = func(_ time.Time, _ *logger.Logger) bool {
+ for _, endpoint := range s.listenClientURL {
+ _, err = s.ecli.Defragment(ctx, endpoint)
Review Comment:
```suggestion
ctx, cancel :=
context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
_, err = s.ecli.Defragment(ctx, endpoint)
```
##########
banyand/metadata/embeddedserver/server.go:
##########
@@ -48,8 +60,12 @@ func (s *server) Role() databasev1.Role {
func (s *server) FlagSet() *run.FlagSet {
fs := run.NewFlagSet("metadata")
fs.StringVar(&s.rootDir, "metadata-root-path", "/tmp", "the root path
of metadata")
+ fs.StringVar(&s.autoCompactionMode, "etcd-auto-compaction-mode",
"periodic", "auto compaction mode")
+ fs.StringVar(&s.autoCompactionRetention,
"etcd-auto-compaction-retention", "1h", "auto compaction retention")
+ fs.StringVar(&s.defragCron, "etcd-defrag-cron", "@daily",
"defragmentation to free up disk space")
fs.StringSliceVar(&s.listenClientURL, "etcd-listen-client-url",
[]string{"http://localhost:2379"}, "A URL to listen on for client traffic")
fs.StringSliceVar(&s.listenPeerURL, "etcd-listen-peer-url",
[]string{"http://localhost:2380"}, "A URL to listen on for peer traffic")
+ fs.VarP(&s.quotaBackendBytes, "quota-backend-bytes", "", "Quota for
backend storage")
Review Comment:
```suggestion
fs.VarP(&s.quotaBackendBytes, "etcd-quota-backend-bytes", "", "Quota
for backend storage")
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]