when reflecting a sdblob, insert all the stream and intermediate blobs using a transaction #50

Closed
shyba wants to merge 39 commits from insert_under_tx into master
2 changed files with 9 additions and 3 deletions
Showing only changes of commit b97595311f - Show all commits

View file

@ -70,7 +70,11 @@ func (s *Server) Start(address string) error {
} }
r := mux.NewRouter() r := mux.NewRouter()
r.HandleFunc("/get/{hash}", func(w http.ResponseWriter, r *http.Request) { r.HandleFunc("/get/{hash}", func(w http.ResponseWriter, r *http.Request) {
enqueue(&blobRequest{request: r, reply: w}) waiter := stop.New()
enqueue(&blobRequest{request: r, reply: w, finished: waiter})
select {
case <-waiter.Ch():
}
}) })
r.HandleFunc("/has/{hash}", func(w http.ResponseWriter, r *http.Request) { r.HandleFunc("/has/{hash}", func(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r) vars := mux.Vars(r)

View file

@ -11,6 +11,7 @@ import (
type blobRequest struct { type blobRequest struct {
request *http.Request request *http.Request
reply http.ResponseWriter reply http.ResponseWriter
finished *stop.Group
} }
var getReqCh = make(chan *blobRequest) var getReqCh = make(chan *blobRequest)
@ -37,4 +38,5 @@ func enqueue(b *blobRequest) {
func process(server *Server, r *blobRequest) { func process(server *Server, r *blobRequest) {
server.HandleGetBlob(r.reply, r.request) server.HandleGetBlob(r.reply, r.request)
r.finished.Done()
} }