@@ -26,6 +26,7 @@ import (
26
26
"google.golang.org/grpc"
27
27
"google.golang.org/grpc/codes"
28
28
"google.golang.org/grpc/status"
29
+ "storj.io/drpc"
29
30
)
30
31
31
32
const (
@@ -133,6 +134,15 @@ func (s *TenantServer) RegisterService(g *grpc.Server) {
133
134
tspb .RegisterTimeSeriesServer (g , s )
134
135
}
135
136
137
+ type drpcTenantServer struct {
138
+ * TenantServer
139
+ }
140
+
141
+ // RegisterService registers the DRPC service.
142
+ func (s * TenantServer ) RegisterDRPCService (d drpc.Mux ) error {
143
+ return tspb .DRPCRegisterTimeSeries (d , & drpcTenantServer {TenantServer : s })
144
+ }
145
+
136
146
// RegisterGateway starts the gateway (i.e. reverse proxy) that proxies HTTP requests
137
147
// to the appropriate gRPC endpoints.
138
148
func (s * TenantServer ) RegisterGateway (
@@ -210,6 +220,15 @@ func (s *Server) RegisterService(g *grpc.Server) {
210
220
tspb .RegisterTimeSeriesServer (g , s )
211
221
}
212
222
223
+ type drpcServer struct {
224
+ * Server
225
+ }
226
+
227
+ // RegisterService registers the DRPC service.
228
+ func (s * Server ) RegisterDRPCService (d drpc.Mux ) error {
229
+ return tspb .DRPCRegisterTimeSeries (d , & drpcServer {Server : s })
230
+ }
231
+
213
232
// RegisterGateway starts the gateway (i.e. reverse proxy) that proxies HTTP requests
214
233
// to the appropriate gRPC endpoints.
215
234
func (s * Server ) RegisterGateway (
@@ -377,25 +396,63 @@ func (s *Server) Query(
377
396
// set up a KV store and write some keys into it (`MakeDataKey`) to do so without
378
397
// setting up a `*Server`.
379
398
func (s * Server ) Dump (req * tspb.DumpRequest , stream tspb.TimeSeries_DumpServer ) error {
399
+ return s .dump (req , stream )
400
+ }
401
+
402
+ // Dump returns a stream of raw timeseries data that has been stored on the
403
+ // server.
404
+ func (s * drpcServer ) Dump (req * tspb.DumpRequest , stream tspb.DRPCTimeSeries_DumpStream ) error {
405
+ return s .dump (req , stream )
406
+ }
407
+
408
+ func (s * Server ) dump (req * tspb.DumpRequest , stream tspb.RPCTimeSeries_DumpStream ) error {
380
409
d := DefaultDumper {stream .Send }.Dump
381
410
return dumpImpl (stream .Context (), s .db .db , req , d )
382
411
383
412
}
384
413
385
414
// DumpRaw is like Dump, but it returns a stream of raw KV pairs.
386
415
func (s * Server ) DumpRaw (req * tspb.DumpRequest , stream tspb.TimeSeries_DumpRawServer ) error {
416
+ return s .dumpRaw (req , stream )
417
+ }
418
+
419
+ // DumpRaw is like Dump, but it returns a stream of raw KV pairs.
420
+ func (s * drpcServer ) DumpRaw (
421
+ req * tspb.DumpRequest , stream tspb.DRPCTimeSeries_DumpRawStream ,
422
+ ) error {
423
+ return s .dumpRaw (req , stream )
424
+ }
425
+
426
+ func (s * Server ) dumpRaw (req * tspb.DumpRequest , stream tspb.RPCTimeSeries_DumpRawStream ) error {
387
427
d := rawDumper {stream }.Dump
388
428
return dumpImpl (stream .Context (), s .db .db , req , d )
389
429
}
390
430
391
- func (s * TenantServer ) DumpRaw (_ * tspb.DumpRequest , _ tspb.TimeSeries_DumpRawServer ) error {
431
+ // DumpRaw is like Dump, but it returns a stream of raw KV pairs.
432
+ func (s * drpcTenantServer ) DumpRaw (_ * tspb.DumpRequest , _ tspb.DRPCTimeSeries_DumpRawStream ) error {
433
+ return s .dumpRaw ()
434
+ }
435
+
436
+ func (t * TenantServer ) DumpRaw (_ * tspb.DumpRequest , _ tspb.TimeSeries_DumpRawServer ) error {
437
+ return t .dumpRaw ()
438
+ }
439
+
440
+ func (t * TenantServer ) dumpRaw () error {
392
441
return status .Errorf (codes .Unimplemented , "DumpRaw is not implemented for virtual clusters. " +
393
442
"If you are attempting to take a tsdump, please connect to the system virtual cluster, " +
394
443
"not an application virtual cluster. System virtual clusters will dump all persisted " +
395
444
"metrics from all virtual clusters." )
396
445
}
397
446
398
- func (s * TenantServer ) Dump (_ * tspb.DumpRequest , _ tspb.TimeSeries_DumpServer ) error {
447
+ func (s * drpcTenantServer ) Dump (_ * tspb.DumpRequest , _ tspb.DRPCTimeSeries_DumpStream ) error {
448
+ return s .dump ()
449
+ }
450
+
451
+ func (t * TenantServer ) Dump (_ * tspb.DumpRequest , _ tspb.TimeSeries_DumpServer ) error {
452
+ return t .dump ()
453
+ }
454
+
455
+ func (t * TenantServer ) dump () error {
399
456
return status .Errorf (codes .Unimplemented , "Dump is not implemented for virtual clusters. " +
400
457
"If you are attempting to take a tsdump, please connect to the system virtual cluster, " +
401
458
"not an application virtual cluster. System virtual clusters will dump all persisted " +
@@ -466,7 +523,7 @@ func (dd DefaultDumper) Dump(kv *roachpb.KeyValue) error {
466
523
}
467
524
468
525
type rawDumper struct {
469
- stream tspb.TimeSeries_DumpRawServer
526
+ stream tspb.RPCTimeSeries_DumpRawStream
470
527
}
471
528
472
529
func (rd rawDumper ) Dump (kv * roachpb.KeyValue ) error {
0 commit comments