hanahmily commented on a change in pull request #30:
URL: https://github.com/apache/skywalking-banyandb/pull/30#discussion_r686606169
##########
File path: banyand/liaison/grpc/grpc.go
##########
@@ -19,64 +19,146 @@ package grpc
import (
"context"
+ "fmt"
+ "io"
+ "log"
"net"
+ "path/filepath"
+ "runtime"
+ "strings"
+ "sync"
+ "time"
- "google.golang.org/grpc"
+ "github.com/pkg/errors"
+ grpclib "google.golang.org/grpc"
+ "google.golang.org/grpc/credentials"
+ "github.com/apache/skywalking-banyandb/api/common"
+ "github.com/apache/skywalking-banyandb/api/data"
"github.com/apache/skywalking-banyandb/api/event"
v1 "github.com/apache/skywalking-banyandb/api/proto/banyandb/v1"
+ apischema "github.com/apache/skywalking-banyandb/api/schema"
"github.com/apache/skywalking-banyandb/banyand/discovery"
"github.com/apache/skywalking-banyandb/banyand/queue"
"github.com/apache/skywalking-banyandb/pkg/bus"
+ "github.com/apache/skywalking-banyandb/pkg/convert"
"github.com/apache/skywalking-banyandb/pkg/logger"
+ "github.com/apache/skywalking-banyandb/pkg/partition"
+ "github.com/apache/skywalking-banyandb/pkg/query/logical"
"github.com/apache/skywalking-banyandb/pkg/run"
)
+var (
+ ErrSeriesEvents = errors.New("no seriesEvent")
+ ErrShardEvents = errors.New("no shardEvent")
+ ErrInvalidSeriesID = errors.New("invalid seriesID")
+ ErrServerCert = errors.New("invalid server cert file")
+ ErrServerKey = errors.New("invalid server key file")
+ ErrServerHostOverride = errors.New("invalid serverHostOverride")
+ ErrNoAddr = errors.New("no address")
+)
+
type Server struct {
- addr string
- log *logger.Logger
- ser *grpc.Server
- pipeline queue.Queue
- repo discovery.ServiceRepo
- shardInfo *shardInfo
- seriesInfo *seriesInfo
+ addr string
+ maxRecvMsgSize int
+ TLSVal bool
+ ServerHostOverride string
+ CertFile string
+ keyFile string
+ log *logger.Logger
+ ser *grpclib.Server
+ pipeline queue.Queue
+ repo discovery.ServiceRepo
+ shardInfo *shardInfo
+ seriesInfo *seriesInfo
+ v1.UnimplementedTraceServiceServer
}
type shardInfo struct {
- log *logger.Logger
+ log *logger.Logger
+ shardEvent *shardEvent
+ sync.RWMutex
}
func (s *shardInfo) Rev(message bus.Message) (resp bus.Message) {
- shardEvent, ok := message.Data().(*v1.ShardEvent)
+ event, ok := message.Data().(*v1.ShardEvent)
if !ok {
s.log.Warn().Msg("invalid event data type")
return
}
+ s.shardEvent.setShardEvents(event)
s.log.Info().
- Str("action", v1.Action_name[int32(shardEvent.Action)]).
- Uint64("shardID", shardEvent.Shard.Id).
+ Str("action", v1.Action_name[int32(event.Action)]).
+ Uint64("shardID", event.Shard.Id).
Msg("received a shard event")
return
}
+func (s *shardInfo) getShardEvent(idx string) *v1.ShardEvent {
+ s.RWMutex.RLock()
Review comment:
Move `getShardEvent` into `shardEvent` and remove `shardInfo.RWMutex`,
that could help us use a single lock to protect shardEventsMap.
##########
File path: banyand/liaison/grpc/grpc.go
##########
@@ -49,26 +49,35 @@ import (
)
var (
- ErrSeriesEvents = errors.New("no seriesEvent")
- ErrShardEvents = errors.New("no shardEvent")
- ErrInvalidSeriesID = errors.New("invalid seriesID")
+ ErrSeriesEvents = errors.New("no seriesEvent")
+ ErrShardEvents = errors.New("no shardEvent")
+ ErrInvalidSeriesID = errors.New("invalid seriesID")
+ ErrServerCert = errors.New("invalid server cert file")
+ ErrServerKey = errors.New("invalid server key file")
+ ErrServerHostOverride = errors.New("invalid serverHostOverride")
+ ErrNoAddr = errors.New("no address")
)
type Server struct {
- addr string
- log *logger.Logger
- ser *grpclib.Server
- pipeline queue.Queue
- repo discovery.ServiceRepo
- shardInfo *shardInfo
- seriesInfo *seriesInfo
+ addr string
+ maxRecvMsgSize int
+ TLSVal bool
+ ServerHostOverride string
+ CertFile string
Review comment:
You could follow the below piece to set those flags instead of exporting
them:
```go
tcp.FlagSet().Parse([]string{"--tls=" + xxx})
```
--
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]