feat(locker): add check for nested calls

This commit is contained in:
Jon Lundy
2023-03-19 08:31:00 -06:00
parent d27eb21ffb
commit fcc5d08aa7
12 changed files with 87 additions and 40 deletions

View File

@@ -97,7 +97,7 @@ func (s *service) ServeHTTP(w http.ResponseWriter, r *http.Request) {
var requests []*Request
s.state.Modify(r.Context(), func(ctx context.Context, state *state) error {
s.state.Use(r.Context(), func(ctx context.Context, state *state) error {
for id, p := range state.peers {
fmt.Fprintln(w, "PEER:", id[24:], p.Owner, p.Name)
}
@@ -170,7 +170,7 @@ func (s *service) getPending(w http.ResponseWriter, r *http.Request, peerID stri
)
var peer *Peer
err := s.state.Modify(ctx, func(ctx context.Context, state *state) error {
err := s.state.Use(ctx, func(ctx context.Context, state *state) error {
var ok bool
if peer, ok = state.peers[peerID]; !ok {
return fmt.Errorf("peer not found: %s", peerID)
@@ -285,7 +285,7 @@ func (s *service) getResults(w http.ResponseWriter, r *http.Request) {
// }
var requests ListRequest
s.state.Modify(ctx, func(ctx context.Context, state *state) error {
s.state.Use(ctx, func(ctx context.Context, state *state) error {
requests = make([]*Request, 0, len(state.requests))
for _, req := range state.requests {
@@ -306,7 +306,7 @@ func (s *service) getResults(w http.ResponseWriter, r *http.Request) {
args := requestArgs(r)
args.Requests = requests[:maxResults]
s.state.Modify(ctx, func(ctx context.Context, state *state) error {
s.state.Use(ctx, func(ctx context.Context, state *state) error {
args.CountPeers = len(state.peers)
return nil
})
@@ -323,7 +323,7 @@ func (s *service) getResultsForRequest(w http.ResponseWriter, r *http.Request, u
)
var request *Request
err := s.state.Modify(ctx, func(ctx context.Context, state *state) error {
err := s.state.Use(ctx, func(ctx context.Context, state *state) error {
request = state.requests[uuid]
return nil
@@ -430,7 +430,7 @@ func (s *service) postResult(w http.ResponseWriter, r *http.Request, reqID strin
peerID := r.Form.Get("peer_id")
err := s.state.Modify(ctx, func(ctx context.Context, state *state) error {
err := s.state.Use(ctx, func(ctx context.Context, state *state) error {
var ok bool
if _, ok = state.peers[peerID]; !ok {
log.Printf("peer not found: %s\n", peerID)

View File

@@ -41,7 +41,7 @@ func (s *service) RefreshJob(ctx context.Context, _ time.Time) error {
return err
}
err = s.state.Modify(ctx, func(ctx context.Context, t *state) error {
err = s.state.Use(ctx, func(ctx context.Context, t *state) error {
for _, peer := range peers {
t.peers[peer.ID] = peer
}
@@ -88,7 +88,7 @@ func (s *service) cleanPeerJobs(ctx context.Context) error {
defer span.End()
peers := set.New[string]()
err := s.state.Modify(ctx, func(ctx context.Context, state *state) error {
err := s.state.Use(ctx, func(ctx context.Context, state *state) error {
for id := range state.peers {
peers.Add(id)
}
@@ -181,7 +181,7 @@ func (s *service) cleanRequests(ctx context.Context, now time.Time) error {
// truncate all the request streams
for _, streamID := range streamIDs {
s.state.Modify(ctx, func(ctx context.Context, state *state) error {
s.state.Use(ctx, func(ctx context.Context, state *state) error {
return state.ApplyEvents(event.NewEvents(&RequestTruncated{
RequestID: streamID,
}))

View File

@@ -63,7 +63,7 @@ func (s *service) loadResult(ctx context.Context, request *Request) (*Request, e
return request, nil
}
return request, s.state.Modify(ctx, func(ctx context.Context, t *state) error {
return request, s.state.Use(ctx, func(ctx context.Context, t *state) error {
for i := range request.Responses {
res := request.Responses[i]
@@ -116,7 +116,7 @@ func (s *service) Run(ctx context.Context) (err error) {
}
}
s.state.Modify(ctx, func(ctx context.Context, state *state) error {
s.state.Use(ctx, func(ctx context.Context, state *state) error {
return state.ApplyEvents(events)
})
events = events[:0]