Improved logging for record ingestion failures
authorAdam Dickmeiss <adam@indexdata.dk>
Fri, 30 Nov 2012 13:35:00 +0000 (14:35 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Fri, 30 Nov 2012 13:35:00 +0000 (14:35 +0100)
src/client.c
src/normalize_record.c
src/session.c

index 54d5f51..c12b84f 100644 (file)
@@ -582,17 +582,18 @@ static void client_record_ingest(struct client *cl)
     const char *msg, *addinfo;
     ZOOM_record rec = 0;
     ZOOM_resultset resultset = cl->resultset;
-    int offset = cl->record_offset;
-    if ((rec = ZOOM_resultset_record_immediate(resultset, offset)))
+    struct session *se = client_get_session(cl);
+
+    if ((rec = ZOOM_resultset_record_immediate(resultset, cl->record_offset)))
     {
-        cl->record_offset++;
+        int offset = ++cl->record_offset;
         if (cl->session == 0) {
             /* no operation */
         }
         else if (ZOOM_record_error(rec, &msg, &addinfo, 0))
         {
-            yaz_log(YLOG_WARN, "Record error %s (%s): %s (rec #%d)",
-                    msg, addinfo, client_get_id(cl), cl->record_offset);
+            session_log(se, YLOG_WARN, "Record error %s (%s): %s #%d",
+                        msg, addinfo, client_get_id(cl), offset);
         }
         else
         {
@@ -603,17 +604,33 @@ static void client_record_ingest(struct client *cl)
 
             const char *s = session_setting_oneval(sdb, PZ_NATIVESYNTAX);
             if (nativesyntax_to_type(s, type, rec))
-                yaz_log(YLOG_WARN, "Failed to determine record type");
+                session_log(se, YLOG_WARN, "Failed to determine record type");
             xmlrec = ZOOM_record_get(rec, type, NULL);
             if (!xmlrec)
-                yaz_log(YLOG_WARN, "ZOOM_record_get failed from %s",
-                        client_get_id(cl));
+            {
+                const char *rec_syn =  ZOOM_record_get(rec, "syntax", NULL);
+                session_log(se, YLOG_WARN, "ZOOM_record_get failed from %s #%d",
+                            client_get_id(cl), offset);
+                session_log(se, YLOG_LOG, "pz:nativesyntax=%s . "
+                            "ZOOM record type=%s . Actual record syntax=%s",
+                            s ? s : "null", type,
+                            rec_syn ? rec_syn : "null");
+            }
             else
             {
                 /* OK = 0, -1 = failure, -2 = Filtered */
                 int rc = ingest_record(cl, xmlrec, cl->record_offset, nmem);
                 if (rc == -1)
-                    yaz_log(YLOG_WARN, "Failed to ingest from %s", client_get_id(cl));
+                {
+                    const char *rec_syn =  ZOOM_record_get(rec, "syntax", NULL);
+                    session_log(se, YLOG_WARN,
+                                "Failed to ingest record from %s #%d",
+                                client_get_id(cl), offset);
+                    session_log(se, YLOG_LOG, "pz:nativesyntax=%s . "
+                                "ZOOM record type=%s . Actual record syntax=%s",
+                                s ? s : "null", type,
+                                rec_syn ? rec_syn : "null");
+                }
                 if (rc == -2)
                     cl->filtered += 1;
             }
@@ -622,7 +639,8 @@ static void client_record_ingest(struct client *cl)
     }
     else
     {
-        yaz_log(YLOG_WARN, "Expected record, but got NULL, offset=%d", offset);
+        session_log(se, YLOG_WARN, "Got NULL record from %s #%d",
+                    client_get_id(cl), cl->record_offset);
     }
 }
 
index 9a81fb3..cb53cf6 100644 (file)
@@ -178,6 +178,12 @@ int normalize_record_transform(normalize_record_t nt, xmlDoc **doc,
                 *doc = ndoc;
             else
            {
+                if (!ndoc)
+                    yaz_log(YLOG_WARN, "XSLT produced no document");
+                else if (!root)
+                    yaz_log(YLOG_WARN, "XSLT produced XML with no root node");
+                else if (!root->children)
+                    yaz_log(YLOG_WARN, "XSLT produced XML with no root children nodes");
                if (ndoc)
                    xmlFreeDoc(ndoc);
                return -1;
index 9469fd2..1927a1c 100644 (file)
@@ -256,8 +256,7 @@ static xmlDoc *record_to_xml(struct session *se,
 
     if (!rdoc)
     {
-        session_log(se, YLOG_FATAL, "Non-wellformed XML received from %s",
-                    db->id);
+        session_log(se, YLOG_WARN, "Non-wellformed XML");
         return 0;
     }
 
@@ -350,8 +349,7 @@ static xmlDoc *normalize_record(struct session *se,
 
         if (normalize_record_transform(sdb->map, &rdoc, (const char **)parms))
         {
-            session_log(se, YLOG_WARN, "Normalize failed from %s",
-                        sdb->database->id);
+            session_log(se, YLOG_WARN, "Normalize failed");
         }
         else
         {