Handler timeout should not interrupt the whole indexing pass
This commit is contained in:
parent
84b4378acb
commit
918626c11d
3 changed files with 11 additions and 2 deletions
|
@ -60,7 +60,7 @@ void MEAdv::newData(int n)
|
||||||
time(0L) - m_start > m_filtermaxseconds) {
|
time(0L) - m_start > m_filtermaxseconds) {
|
||||||
LOGERR(("MimeHandlerExec: filter timeout (%d S)\n",
|
LOGERR(("MimeHandlerExec: filter timeout (%d S)\n",
|
||||||
m_filtermaxseconds));
|
m_filtermaxseconds));
|
||||||
CancelCheck::instance().setCancel();
|
throw HandlerTimeout();
|
||||||
}
|
}
|
||||||
// If a cancel request was set by the signal handler (or by us
|
// If a cancel request was set by the signal handler (or by us
|
||||||
// just above), this will raise an exception. Another approach
|
// just above), this will raise an exception. Another approach
|
||||||
|
@ -117,6 +117,9 @@ bool MimeHandlerExec::next_document()
|
||||||
int status;
|
int status;
|
||||||
try {
|
try {
|
||||||
status = mexec.doexec(cmd, myparams, 0, &output);
|
status = mexec.doexec(cmd, myparams, 0, &output);
|
||||||
|
} catch (HandlerTimeout) {
|
||||||
|
LOGERR(("MimeHandlerExec: handler timeout\n"));
|
||||||
|
status = 0x110f;
|
||||||
} catch (CancelExcept) {
|
} catch (CancelExcept) {
|
||||||
LOGERR(("MimeHandlerExec: cancelled\n"));
|
LOGERR(("MimeHandlerExec: cancelled\n"));
|
||||||
status = 0x110f;
|
status = 0x110f;
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#include "mimehandler.h"
|
#include "mimehandler.h"
|
||||||
#include "execmd.h"
|
#include "execmd.h"
|
||||||
|
|
||||||
|
class HandlerTimeout {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Turn external document into internal one by executing an external filter.
|
* Turn external document into internal one by executing an external filter.
|
||||||
*
|
*
|
||||||
|
|
|
@ -228,8 +228,12 @@ bool MimeHandlerExecMultiple::next_document()
|
||||||
m_cmd.zapChild();
|
m_cmd.zapChild();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
} catch (HandlerTimeout) {
|
||||||
|
LOGINFO(("MHExecMultiple: timeout\n"));
|
||||||
|
m_cmd.zapChild();
|
||||||
|
return false;
|
||||||
} catch (CancelExcept) {
|
} catch (CancelExcept) {
|
||||||
LOGINFO(("MHExecMultiple: timeout or interrupt\n"));
|
LOGINFO(("MHExecMultiple: interrupt\n"));
|
||||||
m_cmd.zapChild();
|
m_cmd.zapChild();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue