lib/api, lib/db: Add file debug endpoint (#7095)

This commit is contained in:
Simon Frei
2020-11-10 09:24:45 +01:00
committed by GitHub
parent 2f6a25a56f
commit 1d3b9876f6
2 changed files with 37 additions and 0 deletions
+25
View File
@@ -324,6 +324,7 @@ func (s *service) serve(ctx context.Context) {
debugMux.HandleFunc("/rest/debug/cpuprof", s.getCPUProf) // duration
debugMux.HandleFunc("/rest/debug/heapprof", s.getHeapProf)
debugMux.HandleFunc("/rest/debug/support", s.getSupportBundle)
debugMux.HandleFunc("/rest/debug/file", s.getDebugFile)
restMux.Handler(http.MethodGet, "/rest/debug/*method", s.whenDebugging(debugMux))
// A handler that disables caching
@@ -847,6 +848,30 @@ func (s *service) getDBFile(w http.ResponseWriter, r *http.Request) {
})
}
func (s *service) getDebugFile(w http.ResponseWriter, r *http.Request) {
qs := r.URL.Query()
folder := qs.Get("folder")
file := qs.Get("file")
snap, err := s.model.DBSnapshot(folder)
if err != nil {
http.Error(w, err.Error(), http.StatusNotFound)
return
}
lf, _ := snap.Get(protocol.LocalDeviceID, file)
gf, _ := snap.GetGlobal(file)
av := snap.Availability(file)
vl := snap.DebugGlobalVersions(file)
sendJSON(w, map[string]interface{}{
"global": jsonFileInfo(gf),
"local": jsonFileInfo(lf),
"availability": av,
"globalVersions": vl.String(),
})
}
func (s *service) postSystemRestart(w http.ResponseWriter, r *http.Request) {
s.flushResponse(`{"ok": "restarting"}`, w)
go s.contr.Restart()