Skip to content

Commit 91ce439

Browse files
committed
[FAB-2199] Modify peer to use common GRPC server
This is the initial commit to replace the peer and eventhub GRPC servers with the common GRPC server from the comm package. This is just a simple replace to ensure that things continue to work. This sets the stage for adding TLS and other features. Fixes FAB-2199 Change-Id: Icba1de1e984b2ef210ac2442a3b6c448e0764aa8 Signed-off-by: Gari Singh <[email protected]>
1 parent 1d6cb59 commit 91ce439

File tree

1 file changed

+28
-41
lines changed

1 file changed

+28
-41
lines changed

peer/node/start.go

+28-41
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ import (
4444
"github.com/spf13/cobra"
4545
"github.com/spf13/viper"
4646
"google.golang.org/grpc"
47-
"google.golang.org/grpc/credentials"
4847
"google.golang.org/grpc/grpclog"
4948
)
5049

@@ -114,36 +113,34 @@ func serve(args []string) error {
114113
grpclog.Fatalf("Failed to listen: %v", err)
115114
}
116115

117-
ehubLis, ehubGrpcServer, err := createEventHubServer()
118-
if err != nil {
119-
grpclog.Fatalf("Failed to create ehub server: %v", err)
120-
}
121-
122116
logger.Infof("Security enabled status: %t", core.SecurityEnabled())
123117

124-
var opts []grpc.ServerOption
125-
if comm.TLSEnabled() {
126-
creds, err := credentials.NewServerTLSFromFile(viper.GetString("peer.tls.cert.file"),
127-
viper.GetString("peer.tls.key.file"))
128-
129-
if err != nil {
130-
grpclog.Fatalf("Failed to generate credentials %v", err)
131-
}
132-
opts = []grpc.ServerOption{grpc.Creds(creds)}
118+
//Create GRPC server - return if an error occurs
119+
secureConfig := comm.SecureServerConfig{
120+
UseTLS: viper.GetBool("peer.tls.enabled"),
121+
}
122+
grpcServer, err := comm.NewGRPCServerFromListener(lis, secureConfig)
123+
if err != nil {
124+
fmt.Println("Failed to return new GRPC server: ", err)
125+
return err
133126
}
134127

135-
grpcServer := grpc.NewServer(opts...)
128+
//TODO - do we need different SSL material for events ?
129+
ehubGrpcServer, err := createEventHubServer(secureConfig)
130+
if err != nil {
131+
grpclog.Fatalf("Failed to create ehub server: %v", err)
132+
}
136133

137-
registerChaincodeSupport(grpcServer)
134+
registerChaincodeSupport(grpcServer.Server())
138135

139136
logger.Debugf("Running peer")
140137

141138
// Register the Admin server
142-
pb.RegisterAdminServer(grpcServer, core.NewAdminServer())
139+
pb.RegisterAdminServer(grpcServer.Server(), core.NewAdminServer())
143140

144141
// Register the Endorser server
145142
serverEndorser := endorser.NewEndorserServer()
146-
pb.RegisterEndorserServer(grpcServer, serverEndorser)
143+
pb.RegisterEndorserServer(grpcServer.Server(), serverEndorser)
147144

148145
// Initialize gossip component
149146
bootstrap := viper.GetStringSlice("peer.gossip.bootstrap")
@@ -153,7 +150,7 @@ func serve(args []string) error {
153150
panic(fmt.Sprintf("Failed serializing self identity: %v", err))
154151
}
155152

156-
service.InitGossipService(serializedIdentity, peerEndpoint.Address, grpcServer, bootstrap...)
153+
service.InitGossipService(serializedIdentity, peerEndpoint.Address, grpcServer.Server(), bootstrap...)
157154
defer service.GetGossipService().Stop()
158155

159156
//initialize the env for chainless startup
@@ -202,7 +199,7 @@ func serve(args []string) error {
202199

203200
go func() {
204201
var grpcErr error
205-
if grpcErr = grpcServer.Serve(lis); grpcErr != nil {
202+
if grpcErr = grpcServer.Start(); grpcErr != nil {
206203
grpcErr = fmt.Errorf("grpc server exited with error: %s", grpcErr)
207204
} else {
208205
logger.Info("grpc server exited")
@@ -215,8 +212,8 @@ func serve(args []string) error {
215212
}
216213

217214
// Start the event hub server
218-
if ehubGrpcServer != nil && ehubLis != nil {
219-
go ehubGrpcServer.Serve(ehubLis)
215+
if ehubGrpcServer != nil {
216+
go ehubGrpcServer.Start()
220217
}
221218

222219
// Start profiling http endpoint if enabled
@@ -263,35 +260,25 @@ func registerChaincodeSupport(grpcServer *grpc.Server) {
263260
pb.RegisterChaincodeSupportServer(grpcServer, ccSrv)
264261
}
265262

266-
func createEventHubServer() (net.Listener, *grpc.Server, error) {
263+
func createEventHubServer(secureConfig comm.SecureServerConfig) (comm.GRPCServer, error) {
267264
var lis net.Listener
268-
var grpcServer *grpc.Server
269265
var err error
270266
lis, err = net.Listen("tcp", viper.GetString("peer.events.address"))
271267
if err != nil {
272-
return nil, nil, fmt.Errorf("failed to listen: %v", err)
268+
return nil, fmt.Errorf("failed to listen: %v", err)
273269
}
274270

275-
//TODO - do we need different SSL material for events ?
276-
var opts []grpc.ServerOption
277-
if comm.TLSEnabled() {
278-
creds, err := credentials.NewServerTLSFromFile(
279-
viper.GetString("peer.tls.cert.file"),
280-
viper.GetString("peer.tls.key.file"))
281-
282-
if err != nil {
283-
return nil, nil, fmt.Errorf("Failed to generate credentials %v", err)
284-
}
285-
opts = []grpc.ServerOption{grpc.Creds(creds)}
271+
grpcServer, err := comm.NewGRPCServerFromListener(lis, secureConfig)
272+
if err != nil {
273+
fmt.Println("Failed to return new GRPC server: ", err)
274+
return nil, err
286275
}
287-
288-
grpcServer = grpc.NewServer(opts...)
289276
ehServer := producer.NewEventsServer(
290277
uint(viper.GetInt("peer.events.buffersize")),
291278
viper.GetInt("peer.events.timeout"))
292279

293-
pb.RegisterEventsServer(grpcServer, ehServer)
294-
return lis, grpcServer, err
280+
pb.RegisterEventsServer(grpcServer.Server(), ehServer)
281+
return grpcServer, nil
295282
}
296283

297284
func writePid(fileName string, pid int) error {

0 commit comments

Comments
 (0)