X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Fsession.c;h=2823399f5e322a5b7ea1e7d4039dd66cf8a54451;hb=1b5a08cbaa6e91ed68be8f991cbb0d8b187f5337;hp=52fea135c8eb6449e9b4a7ee375a89b1927f6e3b;hpb=6b431355cb6cfd0e73fb9f308bb09069da1812be;p=pazpar2-moved-to-github.git diff --git a/src/session.c b/src/session.c index 52fea13..2823399 100644 --- a/src/session.c +++ b/src/session.c @@ -57,7 +57,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #include #include -#define USE_TIMING 1 +#define USE_TIMING 0 #if USE_TIMING #include #endif @@ -1038,13 +1038,13 @@ static struct hitsbytarget *hitsbytarget_nb(struct session *se, WRBUF w = wrbuf_alloc(); const char *name = session_setting_oneval(client_get_database(cl), PZ_NAME); - res[*count].id = client_get_id(cl); res[*count].name = *name ? name : "Unknown"; res[*count].hits = client_get_hits(cl); res[*count].approximation = client_get_approximation(cl); - res[*count].records = client_get_num_records(cl); - res[*count].filtered = client_get_num_records_filtered(cl); + res[*count].records = client_get_num_records(cl, + &res[*count].filtered, + 0, 0); res[*count].diagnostic = client_get_diagnostic(cl, &res[*count].message, &res[*count].addinfo); @@ -1280,8 +1280,24 @@ int session_fetch_more(struct session *se) } else { - session_log(se, YLOG_LOG, "%s: no more to fetch", - client_get_id(cl)); + int filtered; + int ingest_failures; + int record_failures; + int num = client_get_num_records( + cl, &filtered, &ingest_failures, &record_failures); + + session_log(se, YLOG_LOG, "%s: hits=" ODR_INT_PRINTF + " fetched=%d filtered=%d", + client_get_id(cl), + client_get_hits(cl), + num, filtered); + if (ingest_failures || record_failures) + { + session_log(se, YLOG_WARN, "%s:" + " ingest failures=%d record failures=%d", + client_get_id(cl), + ingest_failures, record_failures); + } } } else @@ -1687,9 +1703,6 @@ static int ingest_sub_record(struct client *cl, xmlDoc *xdoc, xmlNode *root, { int ret = 0; struct session *se = client_get_session(cl); - struct conf_service *service = se->service; - - insert_settings_values(sdb, xdoc, root, service); if (!check_record_filter(root, sdb)) { @@ -1706,9 +1719,6 @@ static int ingest_sub_record(struct client *cl, xmlDoc *xdoc, xmlNode *root, return ret; } -int ingest_xml_record(struct client *cl, xmlDoc *xdoc, - int record_no, NMEM nmem); - /** \brief ingest XML record \param cl client holds the result set for record \param rec record buffer (0 terminated) @@ -1725,13 +1735,13 @@ int ingest_record(struct client *cl, const char *rec, struct session_database *sdb = client_get_database(cl); struct conf_service *service = se->service; xmlDoc *xdoc = normalize_record(se, sdb, service, rec, nmem); - int r = ingest_xml_record(cl, xdoc, record_no, nmem); + int r = ingest_xml_record(cl, xdoc, record_no, nmem, 0); client_store_xdoc(cl, record_no, xdoc); return r; } int ingest_xml_record(struct client *cl, xmlDoc *xdoc, - int record_no, NMEM nmem) + int record_no, NMEM nmem, int cached_copy) { struct session *se = client_get_session(cl); struct session_database *sdb = client_get_database(cl); @@ -1794,6 +1804,8 @@ int ingest_xml_record(struct client *cl, xmlDoc *xdoc, if (sroot->type == XML_ELEMENT_NODE && !strcmp((const char *) sroot->name, "record")) { + if (!cached_copy) + insert_settings_values(sdb, xdoc, root, service); r = ingest_sub_record(cl, xdoc, sroot, record_no, nmem, sdb, mk); } @@ -1811,6 +1823,8 @@ int ingest_xml_record(struct client *cl, xmlDoc *xdoc, mk->value = nmem_strdup(nmem, mergekey_norm); mk->next = 0; + if (!cached_copy) + insert_settings_values(sdb, xdoc, root, service); r = ingest_sub_record(cl, xdoc, root, record_no, nmem, sdb, mk); } } @@ -2079,8 +2093,6 @@ static int ingest_to_cluster(struct client *cl, if (check_limit_local(cl, record, record_no)) { - session_log(se, YLOG_LOG, "Facet filtered out record no %d from %s", - record_no, sdb->database->id); if (type) xmlFree(type); if (value)