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]

Reply via email to