* found some state/error transition bugs
This commit is contained in:
parent
db34ac1611
commit
3d2eeba638
|
|
@ -78,6 +78,7 @@ module JamRuby
|
|||
self.error_detail = error_detail
|
||||
self.should_retry = self.error_count < 5
|
||||
self.signing = false
|
||||
self.signing_queued_at = nil # if left set, throws off signing_state on subsequent signing attempts
|
||||
|
||||
if save
|
||||
Notification.send_mixdown_sign_failed(self)
|
||||
|
|
@ -166,7 +167,7 @@ module JamRuby
|
|||
|
||||
if signed
|
||||
state = 'SIGNED'
|
||||
elsif signing_started_at
|
||||
elsif signing_started_at && signing
|
||||
# the maximum amount of time the packaging job can take is 10 seconds * num steps. For a 10 track song, this will be 110 seconds. It's a bit long.
|
||||
if Time.now - signing_started_at > APP_CONFIG.signing_job_signing_max_time
|
||||
state = 'SIGNING_TIMEOUT'
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ module JamRuby
|
|||
# track that it's started ( and avoid db validations )
|
||||
signing_started_at = Time.now
|
||||
last_step_at = Time.now
|
||||
JamTrackMixdownPackage.where(:id => @mixdown_package.id).update_all(:signing_started_at => signing_started_at, :should_retry => false, packaging_steps: total_steps, current_packaging_step: 0, last_step_at: last_step_at, :signing => true)
|
||||
#JamTrackMixdownPackage.where(:id => @mixdown_package.id).update_all(:signing_started_at => signing_started_at, :should_retry => false, packaging_steps: total_steps, current_packaging_step: 0, last_step_at: last_step_at, :signing => true)
|
||||
|
||||
# because we are skipping 'after_save', we have to keep the model current for the notification. A bit ugly...
|
||||
|
||||
|
|
@ -72,7 +72,8 @@ module JamRuby
|
|||
@mixdown_package.signing_started_at = signing_started_at
|
||||
@mixdown_package.signing = true
|
||||
@mixdown_package.should_retry = false
|
||||
@mixdown_package.last_step_at = Time.now
|
||||
@mixdown_package.last_step_at = last_step_at
|
||||
@mixdown_package.save
|
||||
|
||||
SubscriptionMessage.mixdown_signing_job_change(@mixdown_package)
|
||||
|
||||
|
|
@ -83,6 +84,8 @@ module JamRuby
|
|||
rescue Exception => e
|
||||
# record the error in the database
|
||||
post_error(e)
|
||||
|
||||
#SubscriptionMessage.mixdown_signing_job_change(@mixdown_package)
|
||||
# and let the job fail, alerting ops too
|
||||
raise
|
||||
end
|
||||
|
|
@ -441,7 +444,7 @@ module JamRuby
|
|||
# set @error_reason before you raise an exception, and it will be sent back as the error reason
|
||||
# otherwise, the error_reason will be unhandled-job-exception
|
||||
def post_error(e)
|
||||
#begin
|
||||
begin
|
||||
# if error_reason is null, assume this is an unhandled error
|
||||
unless @error_reason
|
||||
@error_reason = "unhandled-job-exception"
|
||||
|
|
@ -449,9 +452,9 @@ module JamRuby
|
|||
end
|
||||
@mixdown_package.finish_errored(@error_reason, @error_detail)
|
||||
|
||||
#rescue Exception => e
|
||||
# log.error "unable to post back to the database the error #{e}"
|
||||
#end
|
||||
rescue Exception => e
|
||||
log.error "unable to post back to the database the error #{e}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -112,15 +112,15 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged'))
|
|||
if selectedMixdown.client_state?
|
||||
switch selectedMixdown.client_state
|
||||
when 'cant_open'
|
||||
customMixName = `<h5>L: {selectedMixdown.name}<img src="/assets/content/icon-mix-fail@2X.png" /></h5>`
|
||||
customMixName = `<h5>{selectedMixdown.name}<img src="/assets/content/icon-mix-fail@2X.png" /></h5>`
|
||||
when 'keying_timeout'
|
||||
customMixName = `<h5>K: {selectedMixdown.name}<img src="/assets/content/icon-mix-fail@2X.png" /></h5>`
|
||||
customMixName = `<h5>{selectedMixdown.name}<img src="/assets/content/icon-mix-fail@2X.png" /></h5>`
|
||||
when 'download_fail'
|
||||
customMixName = `<h5>D: {selectedMixdown.name}<img src="/assets/content/icon-mix-fail@2X.png" /></h5>`
|
||||
customMixName = `<h5>{selectedMixdown.name}<img src="/assets/content/icon-mix-fail@2X.png" /></h5>`
|
||||
when 'keying'
|
||||
customMixName = `<h5>K: Loading selected mix... <img src="/assets/shared/spinner.gif" /></h5>`
|
||||
customMixName = `<h5>Loading selected mix... <img src="/assets/shared/spinner.gif" /></h5>`
|
||||
when 'downloading'
|
||||
customMixName = `<h5>D: Loading selected mix... <img src="/assets/shared/spinner.gif" /></h5>`
|
||||
customMixName = `<h5>Loading selected mix... <img src="/assets/shared/spinner.gif" /></h5>`
|
||||
when 'ready'
|
||||
customMixName = `<h5>{selectedMixdown.name}</h5>`
|
||||
disabled = false
|
||||
|
|
@ -128,7 +128,6 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged'))
|
|||
customMixName = `<h5>Creating mixdown... <img src="/assets/shared/spinner.gif" /></h5>`
|
||||
|
||||
else
|
||||
logger.debug("STATE!", @state.downloadingJamTrack)
|
||||
if SessionStore.downloadingJamTrack
|
||||
downloader = `<img src="/assets/shared/spinner.gif" />`
|
||||
|
||||
|
|
@ -374,8 +373,7 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged'))
|
|||
e.preventDefault()
|
||||
|
||||
if @disableLoading
|
||||
$target = $(e.target)
|
||||
context.JK.prodBubble($target, 'no-change-while-loading', {}, {positions:['left', 'top']})
|
||||
alert('Certain actions are disabled while a track is being loaded.')
|
||||
return
|
||||
|
||||
# make this package the active one
|
||||
|
|
@ -386,8 +384,7 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged'))
|
|||
# user wants to select the full track
|
||||
|
||||
if @disableLoading
|
||||
$target = $(e.target)
|
||||
context.JK.prodBubble($target, 'no-change-while-loading', {}, {positions:['left', 'top']})
|
||||
alert('Certain actions are disabled while a track is being loaded.')
|
||||
return
|
||||
|
||||
JamTrackActions.activateNoMixdown(jamtrack)
|
||||
|
|
@ -411,14 +408,35 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged'))
|
|||
@setState({editingMixdownId: null})
|
||||
|
||||
mixdownDelete: (mixdown) ->
|
||||
if confirm("Delete this custom mix?")
|
||||
|
||||
if @state.editingMixdownId?
|
||||
@setState({editingMixdownId:null})
|
||||
return
|
||||
|
||||
if confirm("Delete this custom mix?")
|
||||
JamTrackMixdownActions.deleteMixdown(mixdown)
|
||||
|
||||
|
||||
mixdownError: (mixdown) ->
|
||||
alert("error")
|
||||
|
||||
myPackage = mixdown.myPackage
|
||||
|
||||
if myPackage?
|
||||
switch myPackage.signing_state
|
||||
when 'QUIET_TIMEOUT'
|
||||
action = 'Custom mix never got created. Retry?'
|
||||
when 'QUEUED_TIMEOUT'
|
||||
action = 'Custom mix was never built. Retry?'
|
||||
when 'SIGNING_TIMEOUT'
|
||||
action = 'Custom mix took took long to build. Retry?'
|
||||
when 'ERROR'
|
||||
action = 'Custom mix failed to build. Retry?'
|
||||
else
|
||||
action = 'Custom mix never got created. Retry?'
|
||||
|
||||
return unless action?
|
||||
|
||||
if confirm(action)
|
||||
JamTrackMixdownActions.enqueueMixdown(mixdown)
|
||||
|
||||
createMix: (e) ->
|
||||
e.preventDefault()
|
||||
|
|
@ -451,9 +469,7 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged'))
|
|||
|
||||
mixdown = {jamTrackID: @state.jamTrackState.jamTrack.id, name: name, settings: {speed:speed, pitch: pitch}}
|
||||
|
||||
package_settings = {file_type: 'ogg', encrypt_type: 'jkz'}
|
||||
|
||||
JamTrackMixdownActions.createMixdown(mixdown, package_settings, @createMixdownDone, @createMixdownFail)
|
||||
JamTrackMixdownActions.createMixdown(mixdown, @createMixdownDone, @createMixdownFail)
|
||||
|
||||
@setState({creatingMixdown: true, createMixdownErrors: null})
|
||||
|
||||
|
|
@ -471,6 +487,7 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged'))
|
|||
|
||||
@setState({createMixdownErrors: response})
|
||||
|
||||
|
||||
componentDidMount: () ->
|
||||
|
||||
$(window).unload(@windowUnloaded)
|
||||
|
|
@ -496,6 +513,7 @@ mixins.push(Reflux.listenTo(JamTrackStore, 'onJamTrackChanged'))
|
|||
|
||||
componentDidUpdate: () ->
|
||||
@resizeWindow()
|
||||
setTimeout(@resizeWindow, 1000)
|
||||
|
||||
resizeWindow: () =>
|
||||
$container = $('#minimal-container')
|
||||
|
|
|
|||
|
|
@ -275,7 +275,7 @@ JamTrackActions = @JamTrackActions
|
|||
@requestedFilter = null
|
||||
requested
|
||||
|
||||
onCreateMixdown: (mixdown, package_settings, done, fail) ->
|
||||
onCreateMixdown: (mixdown, done, fail) ->
|
||||
|
||||
volumeSettings = context.jamClient.GetJamTrackSettings();
|
||||
|
||||
|
|
@ -286,7 +286,7 @@ JamTrackActions = @JamTrackActions
|
|||
|
||||
mixdown.settings.tracks = track_settings
|
||||
|
||||
logger.debug("creating mixdown", mixdown, package_settings)
|
||||
logger.debug("creating mixdown", mixdown)
|
||||
|
||||
rest.createMixdown(mixdown)
|
||||
.done((created) =>
|
||||
|
|
@ -295,26 +295,13 @@ JamTrackActions = @JamTrackActions
|
|||
|
||||
logger.debug("created mixdown", created)
|
||||
|
||||
package_settings.id = created.id
|
||||
|
||||
# we have to determine sample rate here, in the store, because child windows don't have access to jamClient
|
||||
package_settings.sample_rate = @sampleRate
|
||||
|
||||
rest.enqueueMixdown(package_settings)
|
||||
.done((enqueued) =>
|
||||
logger.debug("enqueued mixdown package", package_settings)
|
||||
@addOrUpdatePackage(enqueued)
|
||||
done(enqueued)
|
||||
)
|
||||
.fail((jqxhr) =>
|
||||
@app.layout.notify({title:'Unable to Create Custom Mix', text: 'You can push the RETRY button.'})
|
||||
fail(jqxhr)
|
||||
)
|
||||
@onEnqueueMixdown({id: created.id}, done, fail)
|
||||
)
|
||||
.fail((jqxhr) =>
|
||||
fail(jqxhr)
|
||||
)
|
||||
|
||||
|
||||
onEditMixdown: (mixdown) ->
|
||||
logger.debug("editing mixdown", mixdown)
|
||||
|
||||
|
|
@ -379,9 +366,23 @@ JamTrackActions = @JamTrackActions
|
|||
onCloseMixdown: (mixdown) ->
|
||||
logger.debug("closing mixdown", mixdown)
|
||||
|
||||
onEnqueueMixdown: (mixdown) ->
|
||||
onEnqueueMixdown: (mixdown, done, fail) ->
|
||||
logger.debug("enqueuing mixdown", mixdown)
|
||||
|
||||
package_settings = {file_type: 'ogg', encrypt_type: 'jkz', sample_rate: @sampleRate}
|
||||
package_settings.id = mixdown.id
|
||||
|
||||
rest.enqueueMixdown(package_settings)
|
||||
.done((enqueued) =>
|
||||
logger.debug("enqueued mixdown package", package_settings)
|
||||
@addOrUpdatePackage(enqueued)
|
||||
done(enqueued) if done
|
||||
)
|
||||
.fail((jqxhr) =>
|
||||
@app.layout.notify({title:'Unable to Create Custom Mix', text: 'Click the error icon to retry.'})
|
||||
fail(jqxhr) if fail?
|
||||
)
|
||||
|
||||
onDownloadMixdown: (mixdown) ->
|
||||
logger.debug("download mixdown", mixdown)
|
||||
|
||||
|
|
|
|||
|
|
@ -143,6 +143,8 @@ body.media-controls-popup.popup {
|
|||
vertical-align: middle;
|
||||
margin-left:10px;
|
||||
width:100px;
|
||||
white-space:nowrap;
|
||||
min-width:100px;
|
||||
}
|
||||
|
||||
.mixdown-stateful {
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@ if defined?(Bundler)
|
|||
config.signing_job_queue_max_time = 300;
|
||||
# amount of time to allow before giving up on a single step in packaging job
|
||||
config.mixdown_step_max_time = 300;
|
||||
config.mixdown_job_queue_max_time = 300;
|
||||
|
||||
config.email_alerts_alias = 'alerts@jamkazam.com' # should be used for 'oh no' server down/service down sorts of emails
|
||||
config.email_generic_from = 'nobody@jamkazam.com'
|
||||
|
|
|
|||
Loading…
Reference in New Issue