Compare commits

...

1 Commits

Author SHA1 Message Date
Jin Hai
20f866e703 Go: refactor (#17072)
Refactor stats

---------

Signed-off-by: Jin Hai <haijin.chn@gmail.com>
2026-07-19 09:26:44 +08:00
4 changed files with 21 additions and 99 deletions

View File

@@ -368,8 +368,8 @@ func main() {
common.Warn("Failed to initialize server variables from Redis, using defaults", zap.String("error", err.Error())) common.Warn("Failed to initialize server variables from Redis, using defaults", zap.String("error", err.Error()))
} }
ctx := context.Background() ctx, cancel := context.WithCancel(context.Background())
if err = server.StartServer(ctx, serverName); err != nil { if err = server.StartServer(ctx, cancel, serverName); err != nil {
common.Error("Failed to start EE server", err) common.Error("Failed to start EE server", err)
os.Exit(1) os.Exit(1)
} }

View File

@@ -1,96 +0,0 @@
//
// Copyright 2026 The InfiniFlow Authors. All Rights Reserved.
//
// Licensed 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.
//
package clickhouse
import (
"context"
"fmt"
"sync"
"time"
"github.com/ClickHouse/clickhouse-go/v2"
"github.com/ClickHouse/clickhouse-go/v2/lib/driver"
)
var (
globalDriver *Driver
once sync.Once
)
// GetDriver gets global ClickHouse client instance
func GetDriver() *Driver {
return globalDriver
}
type Driver struct {
conn driver.Conn
config *clickhouse.Options
}
func Init(ctx context.Context, host string, port int, user, password, database string) error {
var err error
once.Do(func() {
address := fmt.Sprintf("%s:%d", host, port)
globalDriver = &Driver{}
globalDriver.config = &clickhouse.Options{
Addr: []string{address},
Auth: clickhouse.Auth{
Database: database,
Username: user,
Password: password,
},
DialTimeout: 5 * time.Second,
MaxOpenConns: 10,
MaxIdleConns: 5,
ConnMaxLifetime: time.Hour,
}
globalDriver.conn, err = clickhouse.Open(globalDriver.config)
if err != nil {
return
}
if err = globalDriver.conn.Ping(ctx); err != nil {
return
}
})
return err
}
func (d *Driver) Ping(ctx context.Context) error {
return d.conn.Ping(ctx)
}
func (d *Driver) Status() (map[string]interface{}, error) {
stats := d.conn.Stats()
version, err := d.conn.ServerVersion()
if err != nil {
return nil, fmt.Errorf("failed to get server version: %w", err)
}
return map[string]interface{}{
"max_open_conns": stats.MaxOpenConns,
"max_idle_conns": stats.MaxIdleConns,
"open": stats.Open,
"idle": stats.Idle,
"server_version": version.String(),
}, nil
}
func Close() error {
return globalDriver.conn.Close()
}

View File

@@ -18,11 +18,29 @@ package clickhouse
import ( import (
"ragflow/internal/common" "ragflow/internal/common"
"sync"
) )
var (
globalDriver *Driver
once sync.Once
)
type Driver struct {
}
// GetDriver gets global stats client instance
func GetDriver() *Driver {
return globalDriver
}
func (d *Driver) CollectModelUsage(modelUsage *common.ModelUsage) error { func (d *Driver) CollectModelUsage(modelUsage *common.ModelUsage) error {
//if modelUsage != nil { //if modelUsage != nil {
// common.Info("CollectModelUsage", zap.Any("modelUsage", modelUsage.String())) // common.Info("CollectModelUsage", zap.Any("modelUsage", modelUsage.String()))
//} //}
return nil return nil
} }
func (d *Driver) Status() (map[string]interface{}, error) {
return nil, nil
}

View File

@@ -37,7 +37,7 @@ func newEEServer() *EEServer {
return &EEServer{} return &EEServer{}
} }
func StartServer(ctx context.Context, serverName string) error { func StartServer(ctx context.Context, cancel context.CancelFunc, serverName string) error {
if serverEE == nil { if serverEE == nil {
return errors.New("server EE is nil") return errors.New("server EE is nil")
} }