From db40de805efa461a065c1481a1254f8db8a398e2 Mon Sep 17 00:00:00 2001 From: Kay Date: Wed, 8 Jan 2025 19:37:25 +0000 Subject: [PATCH 1/5] chore: bump to v0.0.7. --- config/config.yml | 4 --- delivery/websocket/task_scheduler.go | 3 +- go.mod | 20 ++++++------- go.sum | 39 +++++++++++++------------ infrastructure/grpc_client/client.go | 4 +-- infrastructure/grpc_client/config.go | 1 - infrastructure/grpc_client/interface.go | 2 +- repository/delete.go | 3 +- repository/event.go | 3 +- repository/req.go | 3 +- version.go | 2 +- 11 files changed, 38 insertions(+), 46 deletions(-) diff --git a/config/config.yml b/config/config.yml index 8296ea9..119ae34 100644 --- a/config/config.yml +++ b/config/config.yml @@ -42,10 +42,6 @@ manager: # default is global. region: global - # stack is the stack name which the immortal instance is located in. - # default is immortal. - stack: immortal - # database contains details of database connections and limitations. database: # db_name is the name of mongodb related to immortal diff --git a/delivery/websocket/task_scheduler.go b/delivery/websocket/task_scheduler.go index 40976f0..310b87d 100644 --- a/delivery/websocket/task_scheduler.go +++ b/delivery/websocket/task_scheduler.go @@ -2,7 +2,6 @@ package websocket import ( "context" - "fmt" "strconv" "strings" "time" @@ -18,7 +17,7 @@ func (s *Server) checkExpiration() { //nolint tasks, err := s.redis.GetReadyTasks(expirationTaskListName) if err != nil { _, err := s.grpc.AddLog(context.Background(), - fmt.Sprintf("redis error while receiving ready tasks: %v", err)) + "redis error while receiving ready tasks", err.Error()) if err != nil { logger.Error("can't send log to manager", "err", err) } diff --git a/go.mod b/go.mod index 2887f8d..7e9ded4 100644 --- a/go.mod +++ b/go.mod @@ -6,16 +6,16 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.4 github.com/gorilla/websocket v1.5.3 github.com/joho/godotenv v1.5.1 - github.com/mailru/easyjson v0.7.7 + github.com/mailru/easyjson v0.9.0 github.com/prometheus/client_golang v1.20.5 github.com/redis/go-redis/v9 v9.7.0 github.com/rs/zerolog v1.33.0 github.com/stretchr/testify v1.10.0 github.com/tidwall/gjson v1.18.0 - go.mongodb.org/mongo-driver v1.17.1 - golang.org/x/exp v0.0.0-20241210194714-1829a127f884 - google.golang.org/grpc v1.69.0 - google.golang.org/protobuf v1.35.2 + go.mongodb.org/mongo-driver v1.17.2 + golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 + google.golang.org/grpc v1.69.2 + google.golang.org/protobuf v1.36.2 gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/yaml.v3 v3.0.1 ) @@ -33,7 +33,7 @@ require ( github.com/klauspost/compress v1.17.11 // indirect github.com/kr/text v0.2.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/montanaflynn/stats v0.7.1 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -46,10 +46,10 @@ require ( github.com/xdg-go/scram v1.1.2 // indirect github.com/xdg-go/stringprep v1.0.4 // indirect github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/net v0.32.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/net v0.34.0 // indirect golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect + golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422 // indirect ) diff --git a/go.sum b/go.sum index 287f629..15073b2 100644 --- a/go.sum +++ b/go.sum @@ -45,13 +45,14 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4= +github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE= github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= @@ -92,8 +93,8 @@ github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gi github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM= github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM= -go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4= +go.mongodb.org/mongo-driver v1.17.2 h1:gvZyk8352qSfzyZ2UMWcpDpMSGEr1eqE4T793SqyhzM= +go.mongodb.org/mongo-driver v1.17.2/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY= go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE= @@ -106,16 +107,16 @@ go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HY go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/exp v0.0.0-20241210194714-1829a127f884 h1:Y/Mj/94zIQQGHVSv1tTtQBDaQaJe62U9bkDZKKyhPCU= -golang.org/x/exp v0.0.0-20241210194714-1829a127f884/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= +golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI= -golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= @@ -128,8 +129,8 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -142,12 +143,12 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576 h1:8ZmaLZE4XWrtU3MyClkYqqtl6Oegr3235h7jxsDyqCY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241209162323-e6fa225c2576/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= -google.golang.org/grpc v1.69.0 h1:quSiOM1GJPmPH5XtU+BCoVXcDVJJAzNcoyfC2cCjGkI= -google.golang.org/grpc v1.69.0/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= -google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= -google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422 h1:3UsHvIr4Wc2aW4brOaSCmcxh9ksica6fHEr8P1XhkYw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250106144421-5f5ef82da422/go.mod h1:3ENsm/5D1mzDyhpzeRi1NR784I0BcofWBoSc5QqqMK4= +google.golang.org/grpc v1.69.2 h1:U3S9QEtbXC0bYNvRtcoklF3xGtLViumSYxWykJS+7AU= +google.golang.org/grpc v1.69.2/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4= +google.golang.org/protobuf v1.36.2 h1:R8FeyR1/eLmkutZOM5CWghmo5itiG9z0ktFlTVLuTmU= +google.golang.org/protobuf v1.36.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/infrastructure/grpc_client/client.go b/infrastructure/grpc_client/client.go index e73e85c..3c3cf79 100644 --- a/infrastructure/grpc_client/client.go +++ b/infrastructure/grpc_client/client.go @@ -55,9 +55,9 @@ func (c *Client) GetParameters(ctx context.Context) (*mpb.GetParametersResponse, return c.ParametersService.GetParameters(ctx, &mpb.GetParametersRequest{}) } -func (c *Client) AddLog(ctx context.Context, msg string) (*mpb.AddLogResponse, error) { +func (c *Client) AddLog(ctx context.Context, msg, stack string) (*mpb.AddLogResponse, error) { return c.LogService.AddLog(ctx, &mpb.AddLogRequest{ Message: msg, - Stack: c.config.Stack, + Stack: stack, }) } diff --git a/infrastructure/grpc_client/config.go b/infrastructure/grpc_client/config.go index 8782f54..2aba0f1 100644 --- a/infrastructure/grpc_client/config.go +++ b/infrastructure/grpc_client/config.go @@ -4,5 +4,4 @@ type Config struct { Endpoint string `yaml:"endpoint"` Region string `yaml:"region"` Heartbeat uint32 `yaml:"heartbeat_in_second"` - Stack string `yaml:"stack"` } diff --git a/infrastructure/grpc_client/interface.go b/infrastructure/grpc_client/interface.go index d2e6c99..f1428ec 100644 --- a/infrastructure/grpc_client/interface.go +++ b/infrastructure/grpc_client/interface.go @@ -11,7 +11,7 @@ type IClient interface { port, region string, ) (*mpb.RegisterServiceResponse, error) GetParameters(ctx context.Context) (*mpb.GetParametersResponse, error) - AddLog(ctx context.Context, msg string) (*mpb.AddLogResponse, error) + AddLog(ctx context.Context, msg, stack string) (*mpb.AddLogResponse, error) SetID(id string) } diff --git a/repository/delete.go b/repository/delete.go index 03f5035..f0036bc 100644 --- a/repository/delete.go +++ b/repository/delete.go @@ -2,7 +2,6 @@ package repository import ( "context" - "fmt" "github.com/dezh-tech/immortal/pkg/logger" "github.com/dezh-tech/immortal/types" @@ -36,7 +35,7 @@ func (h *Handler) DeleteByID(id string, kind types.Kind) error { _, err := coll.UpdateOne(ctx, filter, update) if err != nil { _, err := h.grpc.AddLog(context.Background(), - fmt.Sprintf("database error while removing event: %v", err)) + "database error while removing event", err.Error()) if err != nil { logger.Error("can't send log to manager", "err", err) } diff --git a/repository/event.go b/repository/event.go index b677f00..6107ee2 100644 --- a/repository/event.go +++ b/repository/event.go @@ -3,7 +3,6 @@ package repository import ( "context" "errors" - "fmt" "github.com/dezh-tech/immortal/pkg/logger" "github.com/dezh-tech/immortal/types/event" @@ -100,7 +99,7 @@ func (h *Handler) HandleEvent(e *event.Event) error { _, err := coll.ReplaceOne(ctx, filter, e, opts) if err != nil { _, err := h.grpc.AddLog(context.Background(), - fmt.Sprintf("database error while adding new event: %v", err)) + "database error while adding new event", err.Error()) if err != nil { logger.Error("can't send log to manager", "err", err) } diff --git a/repository/req.go b/repository/req.go index b6b0c32..2cf25a6 100644 --- a/repository/req.go +++ b/repository/req.go @@ -3,7 +3,6 @@ package repository import ( "context" "errors" - "fmt" "github.com/dezh-tech/immortal/pkg/logger" "github.com/dezh-tech/immortal/types" @@ -77,7 +76,7 @@ func (h *Handler) HandleReq(fs filter.Filters) ([]event.Event, error) { if err != nil { if !errors.Is(err, mongo.ErrNoDocuments) { _, err := h.grpc.AddLog(context.Background(), - fmt.Sprintf("database error while making query: %v", err)) + "database error while making query", err.Error()) if err != nil { logger.Error("can't send log to manager", "err", err) } diff --git a/version.go b/version.go index ad8e088..e4c681b 100644 --- a/version.go +++ b/version.go @@ -8,7 +8,7 @@ var ( major = 0 minor = 0 patch = 7 - meta = "beta" + meta = "" ) func StringVersion() string { From f6ba9e056b7ee8975519fa6a1186ebb43552e41f Mon Sep 17 00:00:00 2001 From: Kay Date: Wed, 8 Jan 2025 19:45:46 +0000 Subject: [PATCH 2/5] chore: bump to v0.0.7. --- delivery/websocket/event_handler.go | 63 ++++++++++++++--------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/delivery/websocket/event_handler.go b/delivery/websocket/event_handler.go index c23d16f..0e21968 100644 --- a/delivery/websocket/event_handler.go +++ b/delivery/websocket/event_handler.go @@ -3,10 +3,10 @@ package websocket import ( "context" "fmt" - "log" "strconv" "time" + "github.com/dezh-tech/immortal/pkg/logger" "github.com/dezh-tech/immortal/pkg/utils" "github.com/dezh-tech/immortal/types/message" "github.com/gorilla/websocket" @@ -38,7 +38,6 @@ func (s *Server) handleEvent(conn *websocket.Conn, m message.Message) { //nolint } eID := msg.Event.GetRawID() - pubkey := msg.Event.PublicKey if !msg.Event.IsValid(eID) { okm := message.MakeOK(false, @@ -61,12 +60,12 @@ func (s *Server) handleEvent(conn *websocket.Conn, m message.Message) { //nolint bloomCheckCmd := pipe.BFExists(qCtx, s.redis.BloomFilterName, eID[:]) // todo::: check config to enable/disable filter checks. - whiteListCheckCmd := pipe.CFExists(qCtx, s.redis.WhiteListFilterName, pubkey) - blackListCheckCmd := pipe.CFExists(qCtx, s.redis.BlackListFilterName, pubkey) + // whiteListCheckCmd := pipe.CFExists(qCtx, s.redis.WhiteListFilterName, pubkey) + // blackListCheckCmd := pipe.CFExists(qCtx, s.redis.BlackListFilterName, pubkey) _, err := pipe.Exec(qCtx) if err != nil { - log.Printf("error: checking filters: %s", err.Error()) + logger.Error("checking bloom filter", "err", err.Error()) } exists, err := bloomCheckCmd.Result() @@ -86,41 +85,41 @@ func (s *Server) handleEvent(conn *websocket.Conn, m message.Message) { //nolint return } - notAllowedToWrite, err := blackListCheckCmd.Result() - if err != nil { - okm := message.MakeOK(false, msg.Event.ID, "error: internal error") - _ = conn.WriteMessage(1, okm) + // notAllowedToWrite, err := blackListCheckCmd.Result() + // if err != nil { + // okm := message.MakeOK(false, msg.Event.ID, "error: internal error") + // _ = conn.WriteMessage(1, okm) - status = serverFail + // status = serverFail - return - } - if notAllowedToWrite { - okm := message.MakeOK(false, msg.Event.ID, "blocked: pubkey is blocked, contact support for more details.") - _ = conn.WriteMessage(1, okm) + // return + // } + // if notAllowedToWrite { + // okm := message.MakeOK(false, msg.Event.ID, "blocked: pubkey is blocked, contact support for more details.") + // _ = conn.WriteMessage(1, okm) - status = limitsFail + // status = limitsFail - return - } + // return + // } - allowedToWrite, err := whiteListCheckCmd.Result() - if err != nil { - okm := message.MakeOK(false, msg.Event.ID, "error: internal error") - _ = conn.WriteMessage(1, okm) + // allowedToWrite, err := whiteListCheckCmd.Result() + // if err != nil { + // okm := message.MakeOK(false, msg.Event.ID, "error: internal error") + // _ = conn.WriteMessage(1, okm) - status = serverFail + // status = serverFail - return - } - if !allowedToWrite { - okm := message.MakeOK(false, msg.Event.ID, "restricted: not allowed to write.") - _ = conn.WriteMessage(1, okm) + // return + // } + // if !allowedToWrite { + // okm := message.MakeOK(false, msg.Event.ID, "restricted: not allowed to write.") + // _ = conn.WriteMessage(1, okm) - status = limitsFail + // status = limitsFail - return - } + // return + // } client, ok := s.conns[conn] if !ok { @@ -287,7 +286,7 @@ func (s *Server) handleEvent(conn *websocket.Conn, m message.Message) { //nolint _, err = s.redis.Client.BFAdd(qCtx, s.redis.BloomFilterName, eID[:]).Result() if err != nil { - log.Printf("error: adding event to bloom filter.") + logger.Info("adding event to bloom filter", "err", err.Error(), msg.Event.ID) } // todo::: can we run goroutines per client? From ce3702bd937e90bff750d93d82032929c2c58f0d Mon Sep 17 00:00:00 2001 From: Kay Date: Wed, 8 Jan 2025 19:49:32 +0000 Subject: [PATCH 3/5] chore: bump to v0.0.7. --- delivery/websocket/event_handler.go | 40 ----------------------------- 1 file changed, 40 deletions(-) diff --git a/delivery/websocket/event_handler.go b/delivery/websocket/event_handler.go index 0e21968..84302ae 100644 --- a/delivery/websocket/event_handler.go +++ b/delivery/websocket/event_handler.go @@ -59,10 +59,6 @@ func (s *Server) handleEvent(conn *websocket.Conn, m message.Message) { //nolint bloomCheckCmd := pipe.BFExists(qCtx, s.redis.BloomFilterName, eID[:]) - // todo::: check config to enable/disable filter checks. - // whiteListCheckCmd := pipe.CFExists(qCtx, s.redis.WhiteListFilterName, pubkey) - // blackListCheckCmd := pipe.CFExists(qCtx, s.redis.BlackListFilterName, pubkey) - _, err := pipe.Exec(qCtx) if err != nil { logger.Error("checking bloom filter", "err", err.Error()) @@ -85,42 +81,6 @@ func (s *Server) handleEvent(conn *websocket.Conn, m message.Message) { //nolint return } - // notAllowedToWrite, err := blackListCheckCmd.Result() - // if err != nil { - // okm := message.MakeOK(false, msg.Event.ID, "error: internal error") - // _ = conn.WriteMessage(1, okm) - - // status = serverFail - - // return - // } - // if notAllowedToWrite { - // okm := message.MakeOK(false, msg.Event.ID, "blocked: pubkey is blocked, contact support for more details.") - // _ = conn.WriteMessage(1, okm) - - // status = limitsFail - - // return - // } - - // allowedToWrite, err := whiteListCheckCmd.Result() - // if err != nil { - // okm := message.MakeOK(false, msg.Event.ID, "error: internal error") - // _ = conn.WriteMessage(1, okm) - - // status = serverFail - - // return - // } - // if !allowedToWrite { - // okm := message.MakeOK(false, msg.Event.ID, "restricted: not allowed to write.") - // _ = conn.WriteMessage(1, okm) - - // status = limitsFail - - // return - // } - client, ok := s.conns[conn] if !ok { _ = conn.WriteMessage(1, message.MakeOK(false, From 3bbbccbf94b7a124919e5d315197f5b165030ca4 Mon Sep 17 00:00:00 2001 From: Kay Date: Fri, 10 Jan 2025 13:23:27 +0000 Subject: [PATCH 4/5] feat(grpc): adding shutdown method. --- cmd/commands/run.go | 13 +- cmd/relay/relay.go | 8 +- delivery/grpc/gen/shutdown.pb.go | 193 ++++++++++++++++++++++++++ delivery/grpc/gen/shutdown_grpc.pb.go | 107 ++++++++++++++ delivery/grpc/proto/shutdown.proto | 13 ++ delivery/grpc/server.go | 4 +- delivery/grpc/shutdown.go | 28 ++++ version.go | 4 +- 8 files changed, 364 insertions(+), 6 deletions(-) create mode 100644 delivery/grpc/gen/shutdown.pb.go create mode 100644 delivery/grpc/gen/shutdown_grpc.pb.go create mode 100644 delivery/grpc/proto/shutdown.proto create mode 100644 delivery/grpc/shutdown.go diff --git a/cmd/commands/run.go b/cmd/commands/run.go index e528f0d..f95a897 100644 --- a/cmd/commands/run.go +++ b/cmd/commands/run.go @@ -6,6 +6,7 @@ import ( "os/signal" "syscall" + "github.com/dezh-tech/immortal" "github.com/dezh-tech/immortal/cmd/relay" "github.com/dezh-tech/immortal/config" "github.com/dezh-tech/immortal/pkg/logger" @@ -23,6 +24,8 @@ func HandleRun(args []string) { logger.InitGlobalLogger(&cfg.Logger) + logger.Info("running immortal", "version", immortal.StringVersion()) + r, err := relay.New(cfg) if err != nil { ExitOnError(err) @@ -31,7 +34,9 @@ func HandleRun(args []string) { sigChan := make(chan os.Signal, 1) signal.Notify(sigChan, syscall.SIGINT, syscall.SIGTERM, os.Interrupt) - errCh := r.Start() + shutdownch := make(chan struct{}, 1) + + errCh := r.Start(shutdownch) select { case sig := <-sigChan: @@ -45,5 +50,11 @@ func HandleRun(args []string) { if err := r.Stop(); err != nil { ExitOnError(err) } + + case shsig := <-shutdownch: + logger.Info("Received signal from manager over grpc: Initiating graceful shutdown", "signal", shsig) + if err := r.Stop(); err != nil { + ExitOnError(err) + } } } diff --git a/cmd/relay/relay.go b/cmd/relay/relay.go index ccfcfae..370966e 100644 --- a/cmd/relay/relay.go +++ b/cmd/relay/relay.go @@ -85,7 +85,7 @@ func New(cfg *config.Config) (*Relay, error) { } // Start runs the relay and its children. -func (r *Relay) Start() chan error { +func (r *Relay) Start(shutdownch chan struct{}) chan error { logger.Info("starting the relay") errCh := make(chan error, 2) @@ -97,7 +97,7 @@ func (r *Relay) Start() chan error { }() go func() { - if err := r.grpcServer.Start(); err != nil { + if err := r.grpcServer.Start(shutdownch); err != nil { errCh <- err } }() @@ -121,5 +121,9 @@ func (r *Relay) Stop() error { return err } + if err := r.redis.Close(); err != nil { + return err + } + return nil } diff --git a/delivery/grpc/gen/shutdown.pb.go b/delivery/grpc/gen/shutdown.pb.go new file mode 100644 index 0000000..43033ca --- /dev/null +++ b/delivery/grpc/gen/shutdown.pb.go @@ -0,0 +1,193 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.33.0 +// protoc (unknown) +// source: shutdown.proto + +package grpc + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ShutdownRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ShutdownRequest) Reset() { + *x = ShutdownRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_shutdown_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShutdownRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShutdownRequest) ProtoMessage() {} + +func (x *ShutdownRequest) ProtoReflect() protoreflect.Message { + mi := &file_shutdown_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ShutdownRequest.ProtoReflect.Descriptor instead. +func (*ShutdownRequest) Descriptor() ([]byte, []int) { + return file_shutdown_proto_rawDescGZIP(), []int{0} +} + +type ShutdownResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ShutdownResponse) Reset() { + *x = ShutdownResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_shutdown_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ShutdownResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShutdownResponse) ProtoMessage() {} + +func (x *ShutdownResponse) ProtoReflect() protoreflect.Message { + mi := &file_shutdown_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ShutdownResponse.ProtoReflect.Descriptor instead. +func (*ShutdownResponse) Descriptor() ([]byte, []int) { + return file_shutdown_proto_rawDescGZIP(), []int{1} +} + +var File_shutdown_proto protoreflect.FileDescriptor + +var file_shutdown_proto_rawDesc = []byte{ + 0x0a, 0x0e, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x22, 0x11, 0x0a, 0x0f, 0x53, 0x68, + 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x12, 0x0a, + 0x10, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x32, 0x54, 0x0a, 0x0f, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x08, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, + 0x12, 0x19, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x75, 0x74, + 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x72, 0x65, + 0x6c, 0x61, 0x79, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x2d, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x7a, 0x68, 0x2d, 0x74, 0x65, 0x63, 0x68, 0x2f, + 0x69, 0x6d, 0x6d, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x2f, 0x64, 0x65, 0x6c, 0x69, 0x76, 0x65, 0x72, + 0x79, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_shutdown_proto_rawDescOnce sync.Once + file_shutdown_proto_rawDescData = file_shutdown_proto_rawDesc +) + +func file_shutdown_proto_rawDescGZIP() []byte { + file_shutdown_proto_rawDescOnce.Do(func() { + file_shutdown_proto_rawDescData = protoimpl.X.CompressGZIP(file_shutdown_proto_rawDescData) + }) + return file_shutdown_proto_rawDescData +} + +var file_shutdown_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_shutdown_proto_goTypes = []interface{}{ + (*ShutdownRequest)(nil), // 0: relay.v1.ShutdownRequest + (*ShutdownResponse)(nil), // 1: relay.v1.ShutdownResponse +} +var file_shutdown_proto_depIdxs = []int32{ + 0, // 0: relay.v1.ShutdownService.Shutdown:input_type -> relay.v1.ShutdownRequest + 1, // 1: relay.v1.ShutdownService.Shutdown:output_type -> relay.v1.ShutdownResponse + 1, // [1:2] is the sub-list for method output_type + 0, // [0:1] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_shutdown_proto_init() } +func file_shutdown_proto_init() { + if File_shutdown_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_shutdown_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ShutdownRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_shutdown_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ShutdownResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_shutdown_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_shutdown_proto_goTypes, + DependencyIndexes: file_shutdown_proto_depIdxs, + MessageInfos: file_shutdown_proto_msgTypes, + }.Build() + File_shutdown_proto = out.File + file_shutdown_proto_rawDesc = nil + file_shutdown_proto_goTypes = nil + file_shutdown_proto_depIdxs = nil +} diff --git a/delivery/grpc/gen/shutdown_grpc.pb.go b/delivery/grpc/gen/shutdown_grpc.pb.go new file mode 100644 index 0000000..c6e57b4 --- /dev/null +++ b/delivery/grpc/gen/shutdown_grpc.pb.go @@ -0,0 +1,107 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.3.0 +// - protoc (unknown) +// source: shutdown.proto + +package grpc + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +const ( + ShutdownService_Shutdown_FullMethodName = "/relay.v1.ShutdownService/Shutdown" +) + +// ShutdownServiceClient is the client API for ShutdownService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ShutdownServiceClient interface { + Shutdown(ctx context.Context, in *ShutdownRequest, opts ...grpc.CallOption) (*ShutdownResponse, error) +} + +type shutdownServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewShutdownServiceClient(cc grpc.ClientConnInterface) ShutdownServiceClient { + return &shutdownServiceClient{cc} +} + +func (c *shutdownServiceClient) Shutdown(ctx context.Context, in *ShutdownRequest, opts ...grpc.CallOption) (*ShutdownResponse, error) { + out := new(ShutdownResponse) + err := c.cc.Invoke(ctx, ShutdownService_Shutdown_FullMethodName, in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ShutdownServiceServer is the server API for ShutdownService service. +// All implementations should embed UnimplementedShutdownServiceServer +// for forward compatibility +type ShutdownServiceServer interface { + Shutdown(context.Context, *ShutdownRequest) (*ShutdownResponse, error) +} + +// UnimplementedShutdownServiceServer should be embedded to have forward compatible implementations. +type UnimplementedShutdownServiceServer struct { +} + +func (UnimplementedShutdownServiceServer) Shutdown(context.Context, *ShutdownRequest) (*ShutdownResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Shutdown not implemented") +} + +// UnsafeShutdownServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ShutdownServiceServer will +// result in compilation errors. +type UnsafeShutdownServiceServer interface { + mustEmbedUnimplementedShutdownServiceServer() +} + +func RegisterShutdownServiceServer(s grpc.ServiceRegistrar, srv ShutdownServiceServer) { + s.RegisterService(&ShutdownService_ServiceDesc, srv) +} + +func _ShutdownService_Shutdown_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ShutdownRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ShutdownServiceServer).Shutdown(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ShutdownService_Shutdown_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ShutdownServiceServer).Shutdown(ctx, req.(*ShutdownRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// ShutdownService_ServiceDesc is the grpc.ServiceDesc for ShutdownService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var ShutdownService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "relay.v1.ShutdownService", + HandlerType: (*ShutdownServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Shutdown", + Handler: _ShutdownService_Shutdown_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "shutdown.proto", +} diff --git a/delivery/grpc/proto/shutdown.proto b/delivery/grpc/proto/shutdown.proto new file mode 100644 index 0000000..b1c8e79 --- /dev/null +++ b/delivery/grpc/proto/shutdown.proto @@ -0,0 +1,13 @@ +syntax = "proto3"; + +package relay.v1; + +option go_package = "github.com/dezh-tech/immortal/delivery/grpc"; + +service ShutdownService { + rpc Shutdown (ShutdownRequest) returns (ShutdownResponse); +} + +message ShutdownRequest {} + +message ShutdownResponse {} diff --git a/delivery/grpc/server.go b/delivery/grpc/server.go index de31b09..d0e48db 100644 --- a/delivery/grpc/server.go +++ b/delivery/grpc/server.go @@ -37,7 +37,7 @@ func New(conf *Config, r *redis.Redis, db *database.Database, st time.Time) *Ser } } -func (s *Server) Start() error { +func (s *Server) Start(shutdownch chan struct{}) error { listener, err := net.Listen("tcp", net.JoinHostPort(s.config.Bind, //nolint strconv.Itoa(int(s.config.Port)))) if err != nil { @@ -47,8 +47,10 @@ func (s *Server) Start() error { grpcServer := grpc.NewServer(grpc.ChainUnaryInterceptor()) healthServer := newHealthServer(s) + shutdownServer := newShutdownServer(s, shutdownch) rpb.RegisterHealthServiceServer(grpcServer, healthServer) + rpb.RegisterShutdownServiceServer(grpcServer, shutdownServer) s.listener = listener s.grpc = grpcServer diff --git a/delivery/grpc/shutdown.go b/delivery/grpc/shutdown.go new file mode 100644 index 0000000..7d7d775 --- /dev/null +++ b/delivery/grpc/shutdown.go @@ -0,0 +1,28 @@ +package grpc + +import ( + "context" + + rpb "github.com/dezh-tech/immortal/delivery/grpc/gen" + "github.com/dezh-tech/immortal/pkg/logger" +) + +type shutdownServer struct { + shdCh chan struct{} + *Server +} + +func newShutdownServer(server *Server, shdCh chan struct{}) *shutdownServer { + return &shutdownServer{ + Server: server, + shdCh: shdCh, + } +} + +func (s shutdownServer) Shutdown(ctx context.Context, r *rpb.ShutdownRequest) (*rpb.ShutdownResponse, error) { + logger.Info("shutdown signal received from grpc", "caller", r.String()) + sig := new(struct{}) + s.shdCh <- *sig + + return nil, nil +} diff --git a/version.go b/version.go index e4c681b..71842bf 100644 --- a/version.go +++ b/version.go @@ -7,8 +7,8 @@ import "fmt" var ( major = 0 minor = 0 - patch = 7 - meta = "" + patch = 8 + meta = "beta" ) func StringVersion() string { From c27d1c05ffe7456842d41a74ab24c286693db660 Mon Sep 17 00:00:00 2001 From: Kay Date: Fri, 10 Jan 2025 15:15:02 +0000 Subject: [PATCH 5/5] fix: lint error. --- delivery/grpc/shutdown.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/delivery/grpc/shutdown.go b/delivery/grpc/shutdown.go index 7d7d775..d6ab2a9 100644 --- a/delivery/grpc/shutdown.go +++ b/delivery/grpc/shutdown.go @@ -19,10 +19,10 @@ func newShutdownServer(server *Server, shdCh chan struct{}) *shutdownServer { } } -func (s shutdownServer) Shutdown(ctx context.Context, r *rpb.ShutdownRequest) (*rpb.ShutdownResponse, error) { +func (s shutdownServer) Shutdown(_ context.Context, r *rpb.ShutdownRequest) (*rpb.ShutdownResponse, error) { logger.Info("shutdown signal received from grpc", "caller", r.String()) - sig := new(struct{}) - s.shdCh <- *sig - return nil, nil + s.shdCh <- struct{}{} + + return &rpb.ShutdownResponse{}, nil }