Skip to content

Commit 6073ada

Browse files
authored
Merge pull request #200 from anyproto/GO-6379-stats-error-for-archived-spaces
GO-6379 space stats: check status
2 parents 531c545 + 47964df commit 6073ada

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

debug/nodedebugrpc/nodedebugrpc.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55
"encoding/json"
66
"errors"
7-
"fmt"
87
"net/http"
98
"strconv"
109

@@ -121,17 +120,17 @@ func (s *nodeDebugRpc) handleSpaceStats(rw http.ResponseWriter, req *http.Reques
121120
errStatus = http.StatusNotImplemented
122121
}
123122

124-
errorStr := fmt.Sprintf("failed to get space stats: %s", err)
123+
if errors.Is(err, nodespace.ErrSpaceStatus) {
124+
errStatus = http.StatusBadRequest
125+
}
126+
125127
errReply := statsError{
126-
Error: errorStr,
128+
Error: err.Error(),
127129
}
128130

129-
log.Error(errorStr, zap.Error(err))
130131
rw.WriteHeader(errStatus)
131-
132132
marshalledErr, _ := json.MarshalIndent(errReply, "", " ")
133133
rw.Write(marshalledErr)
134-
135134
return
136135
}
137136

nodespace/service.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package nodespace
44
import (
55
"context"
66
"errors"
7+
"fmt"
78
"time"
89

910
"github.com/anyproto/any-sync/app"
@@ -100,7 +101,27 @@ func (s *service) PickSpace(ctx context.Context, id string) (NodeSpace, error) {
100101
return v.(NodeSpace), nil
101102
}
102103

104+
var ErrSpaceStatus = errors.New("space status error")
105+
103106
func (s *service) GetStats(ctx context.Context, id string, treeTop int) (spaceStats nodestorage.SpaceStats, err error) {
107+
status, err := s.spaceStorageProvider.IndexStorage().SpaceStatus(ctx, id)
108+
if err != nil {
109+
return
110+
}
111+
switch status {
112+
case nodestorage.SpaceStatusError:
113+
err = fmt.Errorf("%w: error state", ErrSpaceStatus)
114+
case nodestorage.SpaceStatusRemove:
115+
err = fmt.Errorf("%w: remove state", ErrSpaceStatus)
116+
case nodestorage.SpaceStatusRemovePrepare:
117+
err = fmt.Errorf("%w: remove prepare state", ErrSpaceStatus)
118+
case nodestorage.SpaceStatusArchived:
119+
err = fmt.Errorf("%w: archived state", ErrSpaceStatus)
120+
case nodestorage.SpaceStatusOk:
121+
}
122+
if err != nil {
123+
return
124+
}
104125
return s.spaceStorageProvider.GetStats(ctx, id, treeTop)
105126
}
106127

0 commit comments

Comments
 (0)