lock cache during ROM move operation
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
449d48258d
commit
9a2e992964
22
main.go
22
main.go
@ -153,7 +153,9 @@ func moveBuildArtifacts(outDirectory, romDirectory string) bool {
|
|||||||
|
|
||||||
newROMs = true
|
newROMs = true
|
||||||
log.Printf("new build found - moving file %s", v.Name())
|
log.Printf("new build found - moving file %s", v.Name())
|
||||||
|
romCache.Lock() // lock to prevent multiple concurrent goroutines moving the same file
|
||||||
err := moveBuildFile(fmt.Sprintf("%s/%s", outDirectory, v.Name()), fmt.Sprintf("%s/%s", romDirectory, v.Name()))
|
err := moveBuildFile(fmt.Sprintf("%s/%s", outDirectory, v.Name()), fmt.Sprintf("%s/%s", romDirectory, v.Name()))
|
||||||
|
romCache.Unlock()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("failed to move file '%s' from out to rom directory: %v", v.Name(), err)
|
log.Printf("failed to move file '%s' from out to rom directory: %v", v.Name(), err)
|
||||||
continue
|
continue
|
||||||
@ -182,11 +184,16 @@ func isLineageROMZip(v fs.DirEntry) (bool, []string) {
|
|||||||
// http - GET /
|
// http - GET /
|
||||||
// Writes JSON response for the updater app to know what versions are available to download
|
// Writes JSON response for the updater app to know what versions are available to download
|
||||||
func lineageOSROMListHandler(w http.ResponseWriter, r *http.Request) {
|
func lineageOSROMListHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
romCache.Lock()
|
go func() {
|
||||||
lineageOSROMs := romCache.ROMs
|
newBuilds := moveBuildArtifacts("out", "public")
|
||||||
romCache.Unlock()
|
if newBuilds {
|
||||||
|
updateROMCache("public")
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
httpResponseJSON := &HTTPResponseJSON{Response: lineageOSROMs}
|
romCache.Lock()
|
||||||
|
httpResponseJSON := &HTTPResponseJSON{Response: romCache.ROMs}
|
||||||
|
romCache.Unlock()
|
||||||
|
|
||||||
b, err := json.Marshal(httpResponseJSON)
|
b, err := json.Marshal(httpResponseJSON)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -196,13 +203,6 @@ func lineageOSROMListHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
w.Write(b)
|
w.Write(b)
|
||||||
|
|
||||||
go func() {
|
|
||||||
newBuilds := moveBuildArtifacts("out", "public")
|
|
||||||
if newBuilds {
|
|
||||||
updateROMCache("public")
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns a sha256 hash of a file located at the path provided
|
// Returns a sha256 hash of a file located at the path provided
|
||||||
|
Loading…
Reference in New Issue
Block a user