summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
aead201)
The default and existing behavior is that backend failures (any
diagnostic) makes the module re-search once. The behavior may
be changed by db parameter 'retry'. If given value '0' disables
retry and '1' enables it. If not given, the Torus record may
specify with element retryOnFailure (value '0'/'1').
<transform>tmarc.xsl</transform>
<urlRecipe>http://sever.com?title=${md-title[\s+/+/g]}&parm=1</urlRecipe>
<zurl>localhost:9998/Default</zurl>
<transform>tmarc.xsl</transform>
<urlRecipe>http://sever.com?title=${md-title[\s+/+/g]}&parm=1</urlRecipe>
<zurl>localhost:9998/Default</zurl>
+ <retryOnFailure>0</retryOnFailure>
</record>
<record>
<udb>heikki/content1</udb>
</record>
<record>
<udb>heikki/content1</udb>
std::string sortStrategy;
std::string extraArgs;
std::string rpn2cql_fname;
std::string sortStrategy;
std::string extraArgs;
std::string rpn2cql_fname;
+ std::string retry_on_failure;
bool use_turbomarc;
bool piggyback;
CCL_bibset ccl_bibset;
bool use_turbomarc;
bool piggyback;
CCL_bibset ccl_bibset;
xmlDoc *explain_doc;
std::string m_proxy;
cql_transform_t cqlt;
xmlDoc *explain_doc;
std::string m_proxy;
cql_transform_t cqlt;
+ std::string retry_on_failure;
public:
Backend();
~Backend();
public:
Backend();
~Backend();
piggyback = true;
use_turbomarc = true;
sortStrategy = "embed";
piggyback = true;
use_turbomarc = true;
sortStrategy = "embed";
+ retry_on_failure = "1"; // existing default (should have been false)
ccl_bibset = ccl_qual_dup(base);
}
ccl_bibset = ccl_qual_dup(base);
}
}
else if (!strcmp((const char *) ptr->name, "rpn2cql"))
s->rpn2cql_fname = mp::xml::get_text(ptr);
}
else if (!strcmp((const char *) ptr->name, "rpn2cql"))
s->rpn2cql_fname = mp::xml::get_text(ptr);
+ else if (!strcmp((const char *) ptr->name,
+ "retryOnFailure"))
+ {
+ s->retry_on_failure = mp::xml::get_text(ptr);
+ }
const char *param_content_user = 0;
const char *param_content_password = 0;
const char *param_nocproxy = 0;
const char *param_content_user = 0;
const char *param_content_password = 0;
const char *param_nocproxy = 0;
+ const char *param_retry = 0;
int no_parms = 0;
char **names;
int no_parms = 0;
char **names;
content_proxy = value;
else if (!strcmp(name, "nocproxy"))
param_nocproxy = value;
content_proxy = value;
else if (!strcmp(name, "nocproxy"))
param_nocproxy = value;
+ else if (!strcmp(name, "retry"))
+ param_retry = value;
else if (!strcmp(name, "proxy"))
{
char **dstr;
else if (!strcmp(name, "proxy"))
{
char **dstr;
b->m_frontend_database = database;
b->enable_cproxy = param_nocproxy ? false : true;
b->m_frontend_database = database;
b->enable_cproxy = param_nocproxy ? false : true;
+ if (param_retry)
+ b->retry_on_failure = param_retry;
+ else
+ b->retry_on_failure = b->sptr->retry_on_failure;
+
if (sptr->query_encoding.length())
b->set_option("rpnCharset", sptr->query_encoding);
if (sptr->query_encoding.length())
b->set_option("rpnCharset", sptr->query_encoding);
error = YAZ_BIB1_PROXY_FAILURE;
*addinfo = odr_strdup(odr, b->m_proxy.c_str());
}
error = YAZ_BIB1_PROXY_FAILURE;
*addinfo = odr_strdup(odr, b->m_proxy.c_str());
}
- else if (same_retries == 0 && proxy_retries == 0)
+ else if (b && b->retry_on_failure.compare("0")
+ && same_retries == 0 && proxy_retries == 0)
{
log_diagnostic(package, error, *addinfo);
same_retries++;
{
log_diagnostic(package, error, *addinfo);
same_retries++;
element mp:sortmap_date { xsd:string }?,
element mp:sortmap_title { xsd:string }?,
element mp:extraArgs { xsd:string }?,
element mp:sortmap_date { xsd:string }?,
element mp:sortmap_title { xsd:string }?,
element mp:extraArgs { xsd:string }?,
- element mp:rpn2cql { xsd:string }?
+ element mp:rpn2cql { xsd:string }?,
+ element mp:retryOnFailure { xsd:string }?