Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
tank
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Container Registry
Model registry
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
AURA
tank
Commits
91efe491
Commit
91efe491
authored
5 years ago
by
Christian Pointner
Browse files
Options
Downloads
Patches
Plain Diff
actually set error message for files with aborted imports
parent
ff5b0da3
No related branches found
No related tags found
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
importer/fetch_converter.go
+14
-10
14 additions, 10 deletions
importer/fetch_converter.go
importer/job.go
+5
-5
5 additions, 5 deletions
importer/job.go
importer/normalize_converter.go
+12
-8
12 additions, 8 deletions
importer/normalize_converter.go
store/files.go
+13
-0
13 additions, 0 deletions
store/files.go
with
44 additions
and
23 deletions
importer/fetch_converter.go
+
14
−
10
View file @
91efe491
...
@@ -121,24 +121,24 @@ func newFFmpegFetchConverter(job *Job) (c *ffmpegFetchConverter, err error) {
...
@@ -121,24 +121,24 @@ func newFFmpegFetchConverter(job *Job) (c *ffmpegFetchConverter, err error) {
if
c
.
stdin
,
err
=
c
.
cmd
.
StdinPipe
();
err
!=
nil
{
if
c
.
stdin
,
err
=
c
.
cmd
.
StdinPipe
();
err
!=
nil
{
c
.
log
.
append
(
"stderr"
,
"ERROR opening stdin pipe: "
+
err
.
Error
())
c
.
log
.
append
(
"stderr"
,
"ERROR opening stdin pipe: "
+
err
.
Error
())
return
nil
,
err
return
nil
,
err
ors
.
New
(
"failed to open stdin pipe for ffmpeg: "
+
err
.
Error
())
}
}
var
stdout
,
stderr
io
.
Reader
var
stdout
,
stderr
io
.
Reader
if
stdout
,
err
=
c
.
cmd
.
StdoutPipe
();
err
!=
nil
{
if
stdout
,
err
=
c
.
cmd
.
StdoutPipe
();
err
!=
nil
{
c
.
log
.
append
(
"stderr"
,
"ERROR opening stdout pipe: "
+
err
.
Error
())
c
.
log
.
append
(
"stderr"
,
"ERROR opening stdout pipe: "
+
err
.
Error
())
return
nil
,
err
return
nil
,
err
ors
.
New
(
"failed to open stdout pipe for ffmpeg: "
+
err
.
Error
())
}
}
c
.
stdout
=
newConvLogger
(
c
.
log
,
"stdout(ffmpeg)"
,
stdout
)
c
.
stdout
=
newConvLogger
(
c
.
log
,
"stdout(ffmpeg)"
,
stdout
)
if
stderr
,
err
=
c
.
cmd
.
StderrPipe
();
err
!=
nil
{
if
stderr
,
err
=
c
.
cmd
.
StderrPipe
();
err
!=
nil
{
c
.
log
.
append
(
"stderr"
,
"ERROR opening stderr pipe: "
+
err
.
Error
())
c
.
log
.
append
(
"stderr"
,
"ERROR opening stderr pipe: "
+
err
.
Error
())
return
nil
,
err
return
nil
,
err
ors
.
New
(
"failed to open stderr pipe for ffmpeg: "
+
err
.
Error
())
}
}
c
.
stderr
=
newConvLogger
(
c
.
log
,
"stderr(ffmpeg)"
,
stderr
)
c
.
stderr
=
newConvLogger
(
c
.
log
,
"stderr(ffmpeg)"
,
stderr
)
if
err
=
c
.
cmd
.
Start
();
err
!=
nil
{
if
err
=
c
.
cmd
.
Start
();
err
!=
nil
{
c
.
log
.
append
(
"stderr"
,
"ERROR starting ffmpeg: "
+
err
.
Error
())
c
.
log
.
append
(
"stderr"
,
"ERROR starting ffmpeg: "
+
err
.
Error
())
return
nil
,
err
return
nil
,
err
ors
.
New
(
"failed to start ffmpeg: "
+
err
.
Error
())
}
}
return
return
}
}
...
@@ -187,15 +187,18 @@ func (c *ffmpegFetchConverter) Wait() (loudness interface{}, log JobLog, err err
...
@@ -187,15 +187,18 @@ func (c *ffmpegFetchConverter) Wait() (loudness interface{}, log JobLog, err err
if
err
=
c
.
cmd
.
Wait
();
err
!=
nil
{
if
err
=
c
.
cmd
.
Wait
();
err
!=
nil
{
if
exiterr
,
ok
:=
err
.
(
*
exec
.
ExitError
);
ok
{
if
exiterr
,
ok
:=
err
.
(
*
exec
.
ExitError
);
ok
{
if
status
,
ok
:=
exiterr
.
Sys
()
.
(
syscall
.
WaitStatus
);
ok
{
if
status
,
ok
:=
exiterr
.
Sys
()
.
(
syscall
.
WaitStatus
);
ok
{
exitcode
:=
status
.
ExitStatus
()
info
:=
fmt
.
Sprintf
(
"ffmpeg returned %d"
,
status
.
ExitStatus
())
c
.
job
.
im
.
dbgLog
.
Printf
(
"ffmpeg-converter: ffmpeg returned %d"
,
exitcode
)
c
.
job
.
im
.
dbgLog
.
Printf
(
"ffmpeg-converter: %s"
,
info
)
c
.
log
.
append
(
"stdout"
,
fmt
.
Sprintf
(
"ffmpeg returned %d"
,
exitcode
))
c
.
log
.
append
(
"stdout"
,
info
)
if
err
!=
nil
{
err
=
errors
.
New
(
info
)
}
return
nil
,
c
.
log
.
log
,
err
return
nil
,
c
.
log
.
log
,
err
}
}
}
}
c
.
job
.
im
.
errLog
.
Println
(
"ffmpeg-converter:
getting
exit code of ffmpeg
failed
:"
,
err
)
c
.
job
.
im
.
errLog
.
Println
(
"ffmpeg-converter:
failed get
exit code of ffmpeg:"
,
err
)
c
.
log
.
append
(
"stderr"
,
"ERROR
getting
exit code of ffmpeg: "
+
err
.
Error
())
c
.
log
.
append
(
"stderr"
,
"ERROR
failed get
exit code of ffmpeg: "
+
err
.
Error
())
return
nil
,
c
.
log
.
log
,
err
return
nil
,
c
.
log
.
log
,
err
ors
.
New
(
"failed get exit code of ffmpeg: "
+
err
.
Error
())
}
}
c
.
job
.
im
.
dbgLog
.
Println
(
"ffmpeg-converter: ffmpeg returned 0 (success)"
)
c
.
job
.
im
.
dbgLog
.
Println
(
"ffmpeg-converter: ffmpeg returned 0 (success)"
)
...
@@ -203,6 +206,7 @@ func (c *ffmpegFetchConverter) Wait() (loudness interface{}, log JobLog, err err
...
@@ -203,6 +206,7 @@ func (c *ffmpegFetchConverter) Wait() (loudness interface{}, log JobLog, err err
if
loudness
,
err
=
c
.
fetchLoudnormParams
();
err
!=
nil
{
if
loudness
,
err
=
c
.
fetchLoudnormParams
();
err
!=
nil
{
c
.
log
.
append
(
"stderr"
,
"ERROR fetching parameters from ffmpeg loudnorm filter: "
+
err
.
Error
())
c
.
log
.
append
(
"stderr"
,
"ERROR fetching parameters from ffmpeg loudnorm filter: "
+
err
.
Error
())
err
=
errors
.
New
(
"failed to parse output of loudnorm filter: "
+
err
.
Error
())
}
}
return
loudness
,
c
.
log
.
log
,
err
return
loudness
,
c
.
log
.
log
,
err
}
}
This diff is collapsed.
Click to expand it.
importer/job.go
+
5
−
5
View file @
91efe491
...
@@ -71,7 +71,7 @@ func (job *Job) run() error {
...
@@ -71,7 +71,7 @@ func (job *Job) run() error {
defer
close
(
job
.
subC
.
done
)
defer
close
(
job
.
subC
.
done
)
if
!
atomic
.
CompareAndSwapUint32
((
*
uint32
)(
&
job
.
State
),
uint32
(
JobPending
),
uint32
(
JobRunning
))
{
if
!
atomic
.
CompareAndSwapUint32
((
*
uint32
)(
&
job
.
State
),
uint32
(
JobPending
),
uint32
(
JobRunning
))
{
job
.
im
.
store
.
Update
FileImportState
(
job
.
Show
,
job
.
ID
,
store
.
ImportAborted
)
job
.
im
.
store
.
Set
FileImportState
Aborted
(
job
.
Show
,
job
.
ID
,
"canceled by user or timeout"
)
// the job was canceled before job.Start() could initialize the context and because of this
// the job was canceled before job.Start() could initialize the context and because of this
// job.Cancel() only set the state to JobCanceled... so we simulate a canceled context here
// job.Cancel() only set the state to JobCanceled... so we simulate a canceled context here
return
context
.
Canceled
return
context
.
Canceled
...
@@ -82,18 +82,18 @@ func (job *Job) run() error {
...
@@ -82,18 +82,18 @@ func (job *Job) run() error {
close
(
job
.
subC
.
running
)
close
(
job
.
subC
.
running
)
if
err
:=
job
.
initializeSource
();
err
!=
nil
{
if
err
:=
job
.
initializeSource
();
err
!=
nil
{
job
.
im
.
store
.
Update
FileImportState
(
job
.
Show
,
job
.
ID
,
store
.
ImportAborted
)
job
.
im
.
store
.
Set
FileImportState
Aborted
(
job
.
Show
,
job
.
ID
,
"failed to initialize source: "
+
err
.
Error
()
)
return
err
return
err
}
}
// job.source is now initialized and points to a valid source
// job.source is now initialized and points to a valid source
job
.
im
.
dbgLog
.
Printf
(
"job source is ready, fetching %d bytes from %s"
,
job
.
source
.
Len
(),
job
.
source
.
String
())
job
.
im
.
dbgLog
.
Printf
(
"job source is ready, fetching %d bytes from %s"
,
job
.
source
.
Len
(),
job
.
source
.
String
())
loudness
,
err
:=
job
.
fetch
()
loudness
,
err
:=
job
.
fetch
()
if
err
!=
nil
{
if
err
!=
nil
{
job
.
im
.
store
.
Update
FileImportState
(
job
.
Show
,
job
.
ID
,
store
.
ImportAborted
)
job
.
im
.
store
.
Set
FileImportState
Aborted
(
job
.
Show
,
job
.
ID
,
"fetching file failed: "
+
err
.
Error
()
)
return
err
return
err
}
}
if
err
=
job
.
normalize
(
loudness
);
err
!=
nil
{
if
err
=
job
.
normalize
(
loudness
);
err
!=
nil
{
job
.
im
.
store
.
Update
FileImportState
(
job
.
Show
,
job
.
ID
,
store
.
ImportAborted
)
job
.
im
.
store
.
Set
FileImportState
Aborted
(
job
.
Show
,
job
.
ID
,
"normalizing file failed: "
+
err
.
Error
()
)
return
err
return
err
}
}
job
.
im
.
store
.
UpdateFileImportState
(
job
.
Show
,
job
.
ID
,
store
.
ImportDone
)
job
.
im
.
store
.
UpdateFileImportState
(
job
.
Show
,
job
.
ID
,
store
.
ImportDone
)
...
@@ -144,7 +144,7 @@ func (job *Job) Start(ctx context.Context, timeout time.Duration) (err error) {
...
@@ -144,7 +144,7 @@ func (job *Job) Start(ctx context.Context, timeout time.Duration) (err error) {
}
}
default
:
default
:
// the work channel is already full so we need to drop all new jobs...
// the work channel is already full so we need to drop all new jobs...
job
.
im
.
store
.
Update
FileImportState
(
job
.
Show
,
job
.
ID
,
store
.
ImportAborted
)
job
.
im
.
store
.
Set
FileImportState
Aborted
(
job
.
Show
,
job
.
ID
,
"enqueuing import failed: too many pending jobs"
)
job
.
cancel
()
job
.
cancel
()
job
.
cleanup
()
job
.
cleanup
()
return
ErrTooManyJobs
return
ErrTooManyJobs
...
...
This diff is collapsed.
Click to expand it.
importer/normalize_converter.go
+
12
−
8
View file @
91efe491
...
@@ -25,6 +25,7 @@
...
@@ -25,6 +25,7 @@
package
importer
package
importer
import
(
import
(
"errors"
"fmt"
"fmt"
"io"
"io"
"os/exec"
"os/exec"
...
@@ -84,24 +85,24 @@ func newFFmpegNormalizeConverter(job *Job, params *ffmpegLoudnormParams) (c *ffm
...
@@ -84,24 +85,24 @@ func newFFmpegNormalizeConverter(job *Job, params *ffmpegLoudnormParams) (c *ffm
if
c
.
stdin
,
err
=
c
.
cmd
.
StdinPipe
();
err
!=
nil
{
if
c
.
stdin
,
err
=
c
.
cmd
.
StdinPipe
();
err
!=
nil
{
c
.
log
.
append
(
"stderr"
,
"ERROR opening stdin pipe: "
+
err
.
Error
())
c
.
log
.
append
(
"stderr"
,
"ERROR opening stdin pipe: "
+
err
.
Error
())
return
nil
,
err
return
nil
,
err
ors
.
New
(
"failed to open stdin pipe for ffmpeg: "
+
err
.
Error
())
}
}
var
stdout
,
stderr
io
.
Reader
var
stdout
,
stderr
io
.
Reader
if
stdout
,
err
=
c
.
cmd
.
StdoutPipe
();
err
!=
nil
{
if
stdout
,
err
=
c
.
cmd
.
StdoutPipe
();
err
!=
nil
{
c
.
log
.
append
(
"stderr"
,
"ERROR opening stdout pipe: "
+
err
.
Error
())
c
.
log
.
append
(
"stderr"
,
"ERROR opening stdout pipe: "
+
err
.
Error
())
return
nil
,
err
return
nil
,
err
ors
.
New
(
"failed to open stdout pipe for ffmpeg: "
+
err
.
Error
())
}
}
c
.
stdout
=
newConvLogger
(
c
.
log
,
"stdout(ffmpeg)"
,
stdout
)
c
.
stdout
=
newConvLogger
(
c
.
log
,
"stdout(ffmpeg)"
,
stdout
)
if
stderr
,
err
=
c
.
cmd
.
StderrPipe
();
err
!=
nil
{
if
stderr
,
err
=
c
.
cmd
.
StderrPipe
();
err
!=
nil
{
c
.
log
.
append
(
"stderr"
,
"ERROR opening stderr pipe: "
+
err
.
Error
())
c
.
log
.
append
(
"stderr"
,
"ERROR opening stderr pipe: "
+
err
.
Error
())
return
nil
,
err
return
nil
,
err
ors
.
New
(
"failed to open stderr pipe for ffmpeg: "
+
err
.
Error
())
}
}
c
.
stderr
=
newConvLogger
(
c
.
log
,
"stderr(ffmpeg)"
,
stderr
)
c
.
stderr
=
newConvLogger
(
c
.
log
,
"stderr(ffmpeg)"
,
stderr
)
if
err
=
c
.
cmd
.
Start
();
err
!=
nil
{
if
err
=
c
.
cmd
.
Start
();
err
!=
nil
{
c
.
log
.
append
(
"stderr"
,
"ERROR starting ffmpeg: "
+
err
.
Error
())
c
.
log
.
append
(
"stderr"
,
"ERROR starting ffmpeg: "
+
err
.
Error
())
return
nil
,
err
return
nil
,
err
ors
.
New
(
"failed to start ffmpeg: "
+
err
.
Error
())
}
}
return
return
}
}
...
@@ -121,15 +122,18 @@ func (c *ffmpegNormalizeConverter) Wait() (log JobLog, err error) {
...
@@ -121,15 +122,18 @@ func (c *ffmpegNormalizeConverter) Wait() (log JobLog, err error) {
if
err
=
c
.
cmd
.
Wait
();
err
!=
nil
{
if
err
=
c
.
cmd
.
Wait
();
err
!=
nil
{
if
exiterr
,
ok
:=
err
.
(
*
exec
.
ExitError
);
ok
{
if
exiterr
,
ok
:=
err
.
(
*
exec
.
ExitError
);
ok
{
if
status
,
ok
:=
exiterr
.
Sys
()
.
(
syscall
.
WaitStatus
);
ok
{
if
status
,
ok
:=
exiterr
.
Sys
()
.
(
syscall
.
WaitStatus
);
ok
{
exitcode
:=
status
.
ExitStatus
()
info
:=
fmt
.
Sprintf
(
"ffmpeg returned %d"
,
status
.
ExitStatus
())
c
.
job
.
im
.
dbgLog
.
Printf
(
"ffmpeg-converter: ffmpeg returned %d"
,
exitcode
)
c
.
job
.
im
.
dbgLog
.
Printf
(
"ffmpeg-converter: %s"
,
info
)
c
.
log
.
append
(
"stdout"
,
fmt
.
Sprintf
(
"ffmpeg returned %d"
,
exitcode
))
c
.
log
.
append
(
"stdout"
,
info
)
if
err
!=
nil
{
err
=
errors
.
New
(
info
)
}
return
c
.
log
.
log
,
err
return
c
.
log
.
log
,
err
}
}
}
}
c
.
job
.
im
.
errLog
.
Println
(
"ffmpeg-converter: getting exit code of ffmpeg failed:"
,
err
)
c
.
job
.
im
.
errLog
.
Println
(
"ffmpeg-converter: getting exit code of ffmpeg failed:"
,
err
)
c
.
log
.
append
(
"stderr"
,
"ERROR getting exit code of ffmpeg: "
+
err
.
Error
())
c
.
log
.
append
(
"stderr"
,
"ERROR getting exit code of ffmpeg: "
+
err
.
Error
())
return
c
.
log
.
log
,
err
return
c
.
log
.
log
,
err
ors
.
New
(
"failed get exit code of ffmpeg: "
+
err
.
Error
())
}
}
c
.
job
.
im
.
dbgLog
.
Println
(
"ffmpeg-converter: ffmpeg returned 0 (success)"
)
c
.
job
.
im
.
dbgLog
.
Println
(
"ffmpeg-converter: ffmpeg returned 0 (success)"
)
...
...
This diff is collapsed.
Click to expand it.
store/files.go
+
13
−
0
View file @
91efe491
...
@@ -123,6 +123,19 @@ func (st *Store) UpdateFileImportState(show string, id uint64, state ImportState
...
@@ -123,6 +123,19 @@ func (st *Store) UpdateFileImportState(show string, id uint64, state ImportState
return
file
,
nil
return
file
,
nil
}
}
func
(
st
*
Store
)
SetFileImportStateAborted
(
show
string
,
id
uint64
,
error
string
)
(
file
*
File
,
err
error
)
{
file
=
&
File
{
ID
:
id
}
var
fields
map
[
string
]
interface
{}
fields
=
make
(
map
[
string
]
interface
{})
fields
[
"source__import__state"
]
=
ImportAborted
fields
[
"source__import__error"
]
=
error
if
err
:=
st
.
db
.
Model
(
&
file
)
.
Where
(
"show_name = ?"
,
show
)
.
Update
(
fields
)
.
Error
;
err
!=
nil
{
return
nil
,
err
}
return
file
,
nil
}
func
(
st
*
Store
)
UpdateFileSourceHash
(
show
string
,
id
uint64
,
hash
string
)
(
*
File
,
error
)
{
func
(
st
*
Store
)
UpdateFileSourceHash
(
show
string
,
id
uint64
,
hash
string
)
(
*
File
,
error
)
{
file
:=
&
File
{
ID
:
id
}
file
:=
&
File
{
ID
:
id
}
if
err
:=
st
.
db
.
Model
(
&
file
)
.
Where
(
"show_name = ?"
,
show
)
.
Update
(
"source__hash"
,
hash
)
.
Error
;
err
!=
nil
{
if
err
:=
st
.
db
.
Model
(
&
file
)
.
Where
(
"show_name = ?"
,
show
)
.
Update
(
"source__hash"
,
hash
)
.
Error
;
err
!=
nil
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment