mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-05-20 15:02:27 +02:00
2022-11-14 Fred Gleason <fredg@paravelsystems.com>
* Fixed a regression in rdcatchd(8) that caused conflicting play-out events to deadlock. Signed-off-by: Fred Gleason <fredg@paravelsystems.com>
This commit is contained in:
parent
b94dee3e64
commit
2f1e57f3f4
@ -23669,3 +23669,6 @@
|
|||||||
2022-11-14 Fred Gleason <fredg@paravelsystems.com>
|
2022-11-14 Fred Gleason <fredg@paravelsystems.com>
|
||||||
* Fixed a race condition with calculating the effect start time
|
* Fixed a race condition with calculating the effect start time
|
||||||
of events in rdcatchd(8).
|
of events in rdcatchd(8).
|
||||||
|
2022-11-14 Fred Gleason <fredg@paravelsystems.com>
|
||||||
|
* Fixed a regression in rdcatchd(8) that caused conflicting play-out
|
||||||
|
events to deadlock.
|
||||||
|
@ -577,14 +577,14 @@ void MainObject::engineData(int id)
|
|||||||
// Check for Playout Deck Availability
|
// Check for Playout Deck Availability
|
||||||
//
|
//
|
||||||
if(catch_events[event].type()==RDRecording::Playout) {
|
if(catch_events[event].type()==RDRecording::Playout) {
|
||||||
|
rda->syslog(LOG_NOTICE,"checking channel: %d: %d",catch_events[event].channel(),catch_playout_deck_status[catch_events[event].channel()-129]);
|
||||||
if(catch_playout_deck_status[catch_events[event].channel()-129]!=
|
if(catch_playout_deck_status[catch_events[event].channel()-129]!=
|
||||||
RDDeck::Idle) {
|
RDDeck::Idle) {
|
||||||
rda->syslog(LOG_WARNING,"playout deck P%d is busy for event %d, skipping",
|
rda->syslog(LOG_WARNING,"playout deck P%d is busy for event %d, skipping",
|
||||||
catch_events[event].channel()-128,
|
catch_events[event].channel()-128,
|
||||||
catch_events[event].id());
|
catch_events[event].id());
|
||||||
WriteExitCode(event,RDRecording::DeviceBusy);
|
WriteExitCode(event,RDRecording::DeviceBusy);
|
||||||
SendEventResponse(0,RDDeck::Recording,catch_events[event].id(),
|
return;
|
||||||
catch_events[event].cutName());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2038,9 +2038,13 @@ void MainObject::WriteExitCode(int event,RDRecording::ExitCode code,
|
|||||||
const QString &err_text)
|
const QString &err_text)
|
||||||
{
|
{
|
||||||
RDDeck::Status status=RDDeck::Offline;
|
RDDeck::Status status=RDDeck::Offline;
|
||||||
|
QString err_txt=err_text;
|
||||||
|
if(err_text.isEmpty()) {
|
||||||
|
err_txt=RDRecording::exitString(code);
|
||||||
|
}
|
||||||
QString sql=QString("update `RECORDINGS` set ")+
|
QString sql=QString("update `RECORDINGS` set ")+
|
||||||
QString::asprintf("`EXIT_CODE`=%d,",code)+
|
QString::asprintf("`EXIT_CODE`=%d,",code)+
|
||||||
"`EXIT_TEXT`='"+RDEscapeString(err_text)+"' where "+
|
"`EXIT_TEXT`='"+RDEscapeString(err_txt)+"' where "+
|
||||||
QString::asprintf("`ID`=%d",catch_events[event].id());
|
QString::asprintf("`ID`=%d",catch_events[event].id());
|
||||||
RDSqlQuery::apply(sql);
|
RDSqlQuery::apply(sql);
|
||||||
switch(code) {
|
switch(code) {
|
||||||
@ -2081,9 +2085,13 @@ void MainObject::WriteExitCode(CatchEvent *ce,RDRecording::ExitCode code,
|
|||||||
const QString &err_text)
|
const QString &err_text)
|
||||||
{
|
{
|
||||||
RDDeck::Status status=RDDeck::Offline;
|
RDDeck::Status status=RDDeck::Offline;
|
||||||
|
QString err_txt=err_text;
|
||||||
|
if(err_text.isEmpty()) {
|
||||||
|
err_txt=RDRecording::exitString(code);
|
||||||
|
}
|
||||||
QString sql=QString("update `RECORDINGS` set ")+
|
QString sql=QString("update `RECORDINGS` set ")+
|
||||||
QString::asprintf("`EXIT_CODE`=%d,",code)+
|
QString::asprintf("`EXIT_CODE`=%d,",code)+
|
||||||
"`EXIT_TEXT`='"+RDEscapeString(err_text)+"' where "+
|
"`EXIT_TEXT`='"+RDEscapeString(err_txt)+"' where "+
|
||||||
QString::asprintf("`ID`=%d",ce->id());
|
QString::asprintf("`ID`=%d",ce->id());
|
||||||
RDSqlQuery::apply(sql);
|
RDSqlQuery::apply(sql);
|
||||||
switch(code) {
|
switch(code) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user