Compare commits
5 Commits
3aa3692384
...
v1.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
| 181424ac70 | |||
| ae869e7a2e | |||
| 173c317238 | |||
| 6a678abc9f | |||
| 5f2f7ea855 |
@@ -32,11 +32,11 @@ jobs:
|
|||||||
- name: Build Binary
|
- name: Build Binary
|
||||||
run: |
|
run: |
|
||||||
go mod tidy
|
go mod tidy
|
||||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -X main.Version=${{ steps.get_version.outputs.VERSION }}" -o goencode ./cmd/goencode
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w -X main.Version=${{ steps.get_version.outputs.CLEAN_VERSION }}" -o goencode ./cmd/goencode
|
||||||
|
|
||||||
- name: Build and push Docker image
|
- name: Build and push Docker image
|
||||||
run: |
|
run: |
|
||||||
docker build --build-arg APP_VERSION=${{ steps.get_version.outputs.VERSION }} -t cr.jdbnet.co.uk/public/goencode:${{ steps.get_version.outputs.CLEAN_VERSION }} .
|
docker build --build-arg APP_VERSION=${{ steps.get_version.outputs.CLEAN_VERSION }} -t cr.jdbnet.co.uk/public/goencode:${{ steps.get_version.outputs.CLEAN_VERSION }} .
|
||||||
docker push cr.jdbnet.co.uk/public/goencode:${{ steps.get_version.outputs.CLEAN_VERSION }}
|
docker push cr.jdbnet.co.uk/public/goencode:${{ steps.get_version.outputs.CLEAN_VERSION }}
|
||||||
docker tag cr.jdbnet.co.uk/public/goencode:${{ steps.get_version.outputs.CLEAN_VERSION }} cr.jdbnet.co.uk/public/goencode:latest
|
docker tag cr.jdbnet.co.uk/public/goencode:${{ steps.get_version.outputs.CLEAN_VERSION }} cr.jdbnet.co.uk/public/goencode:latest
|
||||||
docker push cr.jdbnet.co.uk/public/goencode:latest
|
docker push cr.jdbnet.co.uk/public/goencode:latest
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
media/
|
media/
|
||||||
|
goencode
|
||||||
@@ -138,7 +138,7 @@ func (m *Manager) processWorker() {
|
|||||||
case <-m.stopChan:
|
case <-m.stopChan:
|
||||||
return
|
return
|
||||||
case path := <-m.processChan:
|
case path := <-m.processChan:
|
||||||
m.processFile(path)
|
go m.processFile(path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -151,7 +151,7 @@ func (m *Manager) handleEvent(filePath string) {
|
|||||||
t.Stop()
|
t.Stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
m.timers[filePath] = time.AfterFunc(5*time.Second, func() {
|
m.timers[filePath] = time.AfterFunc(2*time.Minute, func() {
|
||||||
m.timersMu.Lock()
|
m.timersMu.Lock()
|
||||||
delete(m.timers, filePath)
|
delete(m.timers, filePath)
|
||||||
m.timersMu.Unlock()
|
m.timersMu.Unlock()
|
||||||
@@ -176,6 +176,31 @@ func (m *Manager) processFile(filePath string) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Wait until the file is fully copied and stable
|
||||||
|
var lastSize int64 = info.Size()
|
||||||
|
var lastModTime time.Time = info.ModTime()
|
||||||
|
var stableCount int
|
||||||
|
|
||||||
|
for {
|
||||||
|
time.Sleep(5 * time.Second)
|
||||||
|
currentInfo, err := os.Stat(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return // File was likely deleted during copying
|
||||||
|
}
|
||||||
|
|
||||||
|
if currentInfo.Size() == lastSize && currentInfo.ModTime().Equal(lastModTime) {
|
||||||
|
stableCount++
|
||||||
|
if stableCount >= 3 { // Stable for 15 seconds
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
stableCount = 0
|
||||||
|
lastSize = currentInfo.Size()
|
||||||
|
lastModTime = currentInfo.ModTime()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Re-check after waiting
|
||||||
alreadyInQueue, err := db.IsFileAlreadyProcessedOrQueued(filePath)
|
alreadyInQueue, err := db.IsFileAlreadyProcessedOrQueued(filePath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Error checking DB for %s: %v", filePath, err)
|
log.Printf("Error checking DB for %s: %v", filePath, err)
|
||||||
|
|||||||
@@ -165,5 +165,6 @@ func (s *Server) handleRequeueJob(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
s.qm.NotifySSE("queue_updated", nil)
|
s.qm.NotifySSE("queue_updated", nil)
|
||||||
s.qm.NotifySSE("job_added", nil)
|
s.qm.NotifySSE("job_added", nil)
|
||||||
|
s.qm.Trigger()
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user