go/svc/invoice: add statusz
diff --git a/go/svc/invoice/main.go b/go/svc/invoice/main.go
index 8a5ddbe..33bc125 100644
--- a/go/svc/invoice/main.go
+++ b/go/svc/invoice/main.go
@@ -111,45 +111,43 @@
}
}
-func (s *service) RenderInvoice(req *pb.RenderInvoiceRequest, srv pb.Invoicer_RenderInvoiceServer) error {
- sealed, err := s.m.getSealedUid(srv.Context(), req.Uid)
+func (s *service) invoicePDF(ctx context.Context, uid string) ([]byte, error) {
+ sealed, err := s.m.getSealedUid(ctx, uid)
if err != nil {
- if _, ok := status.FromError(err); ok {
- return err
- }
- glog.Errorf("getSealedUid(_, %q): %v", req.Uid, err)
- return status.Error(codes.Unavailable, "internal server error")
+ return nil, err
}
var rendered []byte
if sealed != "" {
// Invoice is sealed, return stored PDF.
- rendered, err = s.m.getRendered(srv.Context(), req.Uid)
+ rendered, err = s.m.getRendered(ctx, uid)
if err != nil {
- if _, ok := status.FromError(err); ok {
- return err
- }
- glog.Errorf("getRendered(_, %q): %v", req.Uid, err)
- return status.Error(codes.Unavailable, "internal server error")
+ return nil, err
}
} else {
// Invoice is proforma, render.
- invoice, err := s.m.getInvoice(srv.Context(), req.Uid)
+ invoice, err := s.m.getInvoice(ctx, uid)
if err != nil {
- if _, ok := status.FromError(err); ok {
- return err
- }
- glog.Errorf("getInvoice(_, %q): %v", req.Uid, err)
- return status.Error(codes.Unavailable, "internal server error")
+ return nil, err
}
- glog.Infof("%+v", invoice)
rendered, err = renderInvoicePDF(invoice, "xxxx", true)
if err != nil {
- glog.Errorf("renderProformaPDF(_): %v", err)
- return status.Error(codes.Unavailable, "internal server error")
+ return nil, err
}
}
+ return rendered, nil
+}
+
+func (s *service) RenderInvoice(req *pb.RenderInvoiceRequest, srv pb.Invoicer_RenderInvoiceServer) error {
+ rendered, err := s.invoicePDF(srv.Context(), req.Uid)
+ if err != nil {
+ if _, ok := status.FromError(err); ok {
+ return err
+ }
+ glog.Errorf("invoicePDF(_, %q): %v", req.Uid, err)
+ return status.Error(codes.Unavailable, "internal server error")
+ }
chunkSize := 16 * 1024
chunk := &pb.RenderInvoiceResponse{}
@@ -201,6 +199,7 @@
}
s := newService(m)
+ s.setupStatusz(mi)
pb.RegisterInvoicerServer(mi.GRPC(), s)
if err := mi.Serve(); err != nil {