public:
std::string m_result_set_id;
Databases m_databases;
- int m_result_set_size;
+ Odr_int m_result_set_size;
yazpp_1::Yaz_Z_Query m_query;
time_t m_time_last_use;
void timestamp();
int m_resultset_max;
int m_session_ttl;
bool m_optimize_search;
+ bool m_restart;
int m_session_max;
};
}
found_set = *set_it;
found_backend = *it;
bc->use_backend(found_backend);
- found_set->timestamp();
// found matching set. No need to search again
return;
}
}
}
- if (!session_restarted &&
+ if (m_p->m_restart && !session_restarted &&
condition == YAZ_BIB1_TEMPORARY_SYSTEM_ERROR)
{
+ package.log("session_shared", YLOG_LOG, "restart");
bc->remove_backend(found_backend);
session_restarted = true;
found_backend.reset();
return; // search error
}
}
- if (!session_restarted && new_set->m_result_set_size < 0)
+ if (m_p->m_restart && !session_restarted && new_set->m_result_set_size < 0)
{
+ package.log("session_shared", YLOG_LOG, "restart");
bc->remove_backend(found_backend);
session_restarted = true;
found_backend.reset();
m_resultset_max = 10;
m_session_ttl = 90;
m_optimize_search = true;
+ m_restart = false;
m_session_max = 100;
}
m_p->m_optimize_search =
mp::xml::get_bool(attr->children, true);
}
+ else if (!strcmp((const char *) attr->name, "restart"))
+ {
+ m_p->m_restart = mp::xml::get_bool(attr->children, true);
+ }
else
throw mp::filter::FilterException(
"Bad attribute " + std::string((const char *)