Skip to content

Commit ca56690

Browse files
tranngoclampuckpuckaustinlparker
authored
fix(productcatalogservice): fix graceful shutdown issues (#1402)
* fix(productcatalogservice): fix graceful shutdown issues * fix(productcatalogservice): update changelog --------- Co-authored-by: Pierre Tessier <pierre@pierretessier.com> Co-authored-by: Austin Parker <austin@ap2.io>
1 parent 3f6958a commit ca56690

File tree

4 files changed

+29
-11
lines changed

4 files changed

+29
-11
lines changed

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ the release.
1717
([#1398](https://github.com/open-telemetry/opentelemetry-demo/pull/1398))
1818
* [chore] remove unused integration test
1919
([#1406](https://github.com/open-telemetry/opentelemetry-demo/pull/1406))
20+
* [productcatalogservice] fix graceful shutdown issues
21+
([#1402](https://github.com/open-telemetry/opentelemetry-demo/pull/1402))
2022

2123
## 1.8.0
2224

src/productcatalogservice/go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ require (
1212
go.opentelemetry.io/otel/sdk v1.23.1
1313
go.opentelemetry.io/otel/sdk/metric v1.23.1
1414
go.opentelemetry.io/otel/trace v1.23.1
15-
google.golang.org/grpc v1.61.0
15+
google.golang.org/grpc v1.61.1
1616
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0
1717
google.golang.org/protobuf v1.32.0
1818
)

src/productcatalogservice/go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe h1:
7474
google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:4jWUdICTdgc3Ibxmr8nAJiiLHwQBY0UI0XZcEMaFKaA=
7575
google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe h1:bQnxqljG/wqi4NTXu2+DJ3n7APcEA882QZ1JvhQAq9o=
7676
google.golang.org/genproto/googleapis/rpc v0.0.0-20240125205218-1f4bbc51befe/go.mod h1:PAREbraiVEVGVdTZsVWjSbbTtSyGbAgIIvni8a8CD5s=
77-
google.golang.org/grpc v1.61.0 h1:TOvOcuXn30kRao+gfcvsebNEa5iZIiLkisYEkf7R7o0=
78-
google.golang.org/grpc v1.61.0/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs=
77+
google.golang.org/grpc v1.61.1 h1:kLAiWrZs7YeDM6MumDe7m3y4aM6wacLzM1Y/wiLP9XY=
78+
google.golang.org/grpc v1.61.1/go.mod h1:VUbo7IFqmF1QtCAstipjG0GIoq49KvMe9+h1jFLBNJs=
7979
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA=
8080
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y=
8181
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=

src/productcatalogservice/main.go

+24-8
Original file line numberDiff line numberDiff line change
@@ -10,37 +10,38 @@ import (
1010
"context"
1111
"fmt"
1212
"io/fs"
13-
1413
"net"
1514
"os"
15+
"os/signal"
1616
"strings"
1717
"sync"
18+
"syscall"
1819
"time"
1920

20-
pb "github.com/opentelemetry/opentelemetry-demo/src/productcatalogservice/genproto/oteldemo"
2121
"github.com/sirupsen/logrus"
22+
2223
"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
2324
"go.opentelemetry.io/contrib/instrumentation/runtime"
24-
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
25-
healthpb "google.golang.org/grpc/health/grpc_health_v1"
26-
2725
"go.opentelemetry.io/otel"
2826
"go.opentelemetry.io/otel/attribute"
2927
otelcodes "go.opentelemetry.io/otel/codes"
3028
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc"
3129
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
3230
"go.opentelemetry.io/otel/propagation"
31+
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
3332
sdkresource "go.opentelemetry.io/otel/sdk/resource"
3433
sdktrace "go.opentelemetry.io/otel/sdk/trace"
3534
"go.opentelemetry.io/otel/trace"
3635

37-
"google.golang.org/protobuf/encoding/protojson"
38-
3936
"google.golang.org/grpc"
4037
"google.golang.org/grpc/codes"
4138
"google.golang.org/grpc/credentials/insecure"
39+
healthpb "google.golang.org/grpc/health/grpc_health_v1"
4240
"google.golang.org/grpc/reflection"
4341
"google.golang.org/grpc/status"
42+
"google.golang.org/protobuf/encoding/protojson"
43+
44+
pb "github.com/opentelemetry/opentelemetry-demo/src/productcatalogservice/genproto/oteldemo"
4445
)
4546

4647
var (
@@ -115,13 +116,15 @@ func main() {
115116
if err := tp.Shutdown(context.Background()); err != nil {
116117
log.Fatalf("Tracer Provider Shutdown: %v", err)
117118
}
119+
log.Println("Shutdown tracer provider")
118120
}()
119121

120122
mp := initMeterProvider()
121123
defer func() {
122124
if err := mp.Shutdown(context.Background()); err != nil {
123125
log.Fatalf("Error shutting down meter provider: %v", err)
124126
}
127+
log.Println("Shutdown meter provider")
125128
}()
126129

127130
err := runtime.Start(runtime.WithMinimumReadMemStatsInterval(time.Second))
@@ -149,7 +152,20 @@ func main() {
149152

150153
pb.RegisterProductCatalogServiceServer(srv, svc)
151154
healthpb.RegisterHealthServer(srv, svc)
152-
srv.Serve(ln)
155+
156+
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM, syscall.SIGKILL)
157+
defer cancel()
158+
159+
go func() {
160+
if err := srv.Serve(ln); err != nil {
161+
log.Fatalf("Failed to serve gRPC server, err: %v", err)
162+
}
163+
}()
164+
165+
<-ctx.Done()
166+
167+
srv.GracefulStop()
168+
log.Println("ProductCatalogService gRPC server stopped")
153169
}
154170

155171
type productCatalog struct {

0 commit comments

Comments
 (0)