mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-12 09:23:09 -06:00
Add opentracing spans to the HTTP RPC clients
This commit is contained in:
parent
863d6aac29
commit
7fdc8c2bdc
|
|
@ -17,6 +17,8 @@ package api
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
opentracing "github.com/opentracing/opentracing-go"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SetRoomAliasRequest is a request to SetRoomAlias
|
// SetRoomAliasRequest is a request to SetRoomAlias
|
||||||
|
|
@ -111,8 +113,11 @@ func (h *httpRoomserverAliasAPI) SetRoomAlias(
|
||||||
request *SetRoomAliasRequest,
|
request *SetRoomAliasRequest,
|
||||||
response *SetRoomAliasResponse,
|
response *SetRoomAliasResponse,
|
||||||
) error {
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "SetRoomAlias")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverSetRoomAliasPath
|
apiURL := h.roomserverURL + RoomserverSetRoomAliasPath
|
||||||
return postJSON(ctx, h.httpClient, apiURL, request, response)
|
return postJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetAliasRoomID implements RoomserverAliasAPI
|
// GetAliasRoomID implements RoomserverAliasAPI
|
||||||
|
|
@ -121,8 +126,11 @@ func (h *httpRoomserverAliasAPI) GetAliasRoomID(
|
||||||
request *GetAliasRoomIDRequest,
|
request *GetAliasRoomIDRequest,
|
||||||
response *GetAliasRoomIDResponse,
|
response *GetAliasRoomIDResponse,
|
||||||
) error {
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "GetAliasRoomID")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverGetAliasRoomIDPath
|
apiURL := h.roomserverURL + RoomserverGetAliasRoomIDPath
|
||||||
return postJSON(ctx, h.httpClient, apiURL, request, response)
|
return postJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemoveRoomAlias implements RoomserverAliasAPI
|
// RemoveRoomAlias implements RoomserverAliasAPI
|
||||||
|
|
@ -131,6 +139,9 @@ func (h *httpRoomserverAliasAPI) RemoveRoomAlias(
|
||||||
request *RemoveRoomAliasRequest,
|
request *RemoveRoomAliasRequest,
|
||||||
response *RemoveRoomAliasResponse,
|
response *RemoveRoomAliasResponse,
|
||||||
) error {
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "RemoveRoomAlias")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverRemoveRoomAliasPath
|
apiURL := h.roomserverURL + RoomserverRemoveRoomAliasPath
|
||||||
return postJSON(ctx, h.httpClient, apiURL, request, response)
|
return postJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
|
opentracing "github.com/opentracing/opentracing-go"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -117,6 +118,9 @@ func (h *httpRoomserverInputAPI) InputRoomEvents(
|
||||||
request *InputRoomEventsRequest,
|
request *InputRoomEventsRequest,
|
||||||
response *InputRoomEventsResponse,
|
response *InputRoomEventsResponse,
|
||||||
) error {
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "InputRoomEvents")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverInputRoomEventsPath
|
apiURL := h.roomserverURL + RoomserverInputRoomEventsPath
|
||||||
return postJSON(ctx, h.httpClient, apiURL, request, response)
|
return postJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,10 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/opentracing/opentracing-go/ext"
|
||||||
|
|
||||||
|
"github.com/opentracing/opentracing-go"
|
||||||
|
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -234,8 +238,11 @@ func (h *httpRoomserverQueryAPI) QueryLatestEventsAndState(
|
||||||
request *QueryLatestEventsAndStateRequest,
|
request *QueryLatestEventsAndStateRequest,
|
||||||
response *QueryLatestEventsAndStateResponse,
|
response *QueryLatestEventsAndStateResponse,
|
||||||
) error {
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryLatestEventsAndState")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryLatestEventsAndStatePath
|
apiURL := h.roomserverURL + RoomserverQueryLatestEventsAndStatePath
|
||||||
return postJSON(ctx, h.httpClient, apiURL, request, response)
|
return postJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
// QueryStateAfterEvents implements RoomserverQueryAPI
|
// QueryStateAfterEvents implements RoomserverQueryAPI
|
||||||
|
|
@ -244,8 +251,11 @@ func (h *httpRoomserverQueryAPI) QueryStateAfterEvents(
|
||||||
request *QueryStateAfterEventsRequest,
|
request *QueryStateAfterEventsRequest,
|
||||||
response *QueryStateAfterEventsResponse,
|
response *QueryStateAfterEventsResponse,
|
||||||
) error {
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryStateAfterEvents")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryStateAfterEventsPath
|
apiURL := h.roomserverURL + RoomserverQueryStateAfterEventsPath
|
||||||
return postJSON(ctx, h.httpClient, apiURL, request, response)
|
return postJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
// QueryEventsByID implements RoomserverQueryAPI
|
// QueryEventsByID implements RoomserverQueryAPI
|
||||||
|
|
@ -254,8 +264,11 @@ func (h *httpRoomserverQueryAPI) QueryEventsByID(
|
||||||
request *QueryEventsByIDRequest,
|
request *QueryEventsByIDRequest,
|
||||||
response *QueryEventsByIDResponse,
|
response *QueryEventsByIDResponse,
|
||||||
) error {
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryEventsByID")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryEventsByIDPath
|
apiURL := h.roomserverURL + RoomserverQueryEventsByIDPath
|
||||||
return postJSON(ctx, h.httpClient, apiURL, request, response)
|
return postJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
// QueryMembershipsForRoom implements RoomserverQueryAPI
|
// QueryMembershipsForRoom implements RoomserverQueryAPI
|
||||||
|
|
@ -264,8 +277,11 @@ func (h *httpRoomserverQueryAPI) QueryMembershipsForRoom(
|
||||||
request *QueryMembershipsForRoomRequest,
|
request *QueryMembershipsForRoomRequest,
|
||||||
response *QueryMembershipsForRoomResponse,
|
response *QueryMembershipsForRoomResponse,
|
||||||
) error {
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryMembershipsForRoom")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryMembershipsForRoomPath
|
apiURL := h.roomserverURL + RoomserverQueryMembershipsForRoomPath
|
||||||
return postJSON(ctx, h.httpClient, apiURL, request, response)
|
return postJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
// QueryInvitesForUser implements RoomserverQueryAPI
|
// QueryInvitesForUser implements RoomserverQueryAPI
|
||||||
|
|
@ -274,8 +290,11 @@ func (h *httpRoomserverQueryAPI) QueryInvitesForUser(
|
||||||
request *QueryInvitesForUserRequest,
|
request *QueryInvitesForUserRequest,
|
||||||
response *QueryInvitesForUserResponse,
|
response *QueryInvitesForUserResponse,
|
||||||
) error {
|
) error {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryInvitesForUser")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryInvitesForUserPath
|
apiURL := h.roomserverURL + RoomserverQueryInvitesForUserPath
|
||||||
return postJSON(ctx, h.httpClient, apiURL, request, response)
|
return postJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
// QueryServerAllowedToSeeEvent implements RoomserverQueryAPI
|
// QueryServerAllowedToSeeEvent implements RoomserverQueryAPI
|
||||||
|
|
@ -284,12 +303,15 @@ func (h *httpRoomserverQueryAPI) QueryServerAllowedToSeeEvent(
|
||||||
request *QueryServerAllowedToSeeEventRequest,
|
request *QueryServerAllowedToSeeEventRequest,
|
||||||
response *QueryServerAllowedToSeeEventResponse,
|
response *QueryServerAllowedToSeeEventResponse,
|
||||||
) (err error) {
|
) (err error) {
|
||||||
|
span, ctx := opentracing.StartSpanFromContext(ctx, "QueryServerAllowedToSeeEvent")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
apiURL := h.roomserverURL + RoomserverQueryServerAllowedToSeeEventPath
|
apiURL := h.roomserverURL + RoomserverQueryServerAllowedToSeeEventPath
|
||||||
return postJSON(ctx, h.httpClient, apiURL, request, response)
|
return postJSON(ctx, span, h.httpClient, apiURL, request, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
func postJSON(
|
func postJSON(
|
||||||
ctx context.Context, httpClient *http.Client,
|
ctx context.Context, span opentracing.Span, httpClient *http.Client,
|
||||||
apiURL string, request, response interface{},
|
apiURL string, request, response interface{},
|
||||||
) error {
|
) error {
|
||||||
jsonBytes, err := json.Marshal(request)
|
jsonBytes, err := json.Marshal(request)
|
||||||
|
|
@ -302,6 +324,15 @@ func postJSON(
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mark the span as being an RPC client.
|
||||||
|
ext.SpanKindRPCClient.Set(span)
|
||||||
|
carrier := opentracing.HTTPHeadersCarrier(req.Header)
|
||||||
|
tracer := opentracing.GlobalTracer()
|
||||||
|
|
||||||
|
if err = tracer.Inject(span.Context(), opentracing.HTTPHeaders, carrier); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
req.Header.Set("Content-Type", "application/json")
|
req.Header.Set("Content-Type", "application/json")
|
||||||
|
|
||||||
res, err := httpClient.Do(req.WithContext(ctx))
|
res, err := httpClient.Do(req.WithContext(ctx))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue