Per target timeout PAZ-981
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 26 Nov 2014 13:38:36 +0000 (14:38 +0100)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 26 Nov 2014 13:38:36 +0000 (14:38 +0100)
New setting pz:timeout which overrides z3950_operation timeout
in service.

doc/pazpar2_conf.xml
etc/settings/testserver.xml
src/client.c
src/settings.c
src/settings.h

index 4e82022..08b5a68 100644 (file)
        </listitem>
        </varlistentry>
 
-       <varlistentry>
+       <varlistentry id="service-timeout">
        <term>timeout</term>
        <listitem>
         <para>
          z3950_operation (30) &lt; session (60) &lt; z3950_session (180) .
          The default values are given in parantheses.
         </para>
+        <para>
+         The Z39.50 operation timeout may be set per database. Refer to
+         <xref linkend="pztimeout"/>.
+        </para>
        </listitem>
        </varlistentry>
       </variablelist>     <!-- Data elements in service directive -->
      </listitem>
     </varlistentry>
 
+
+    <varlistentry id="pztimeout">
+     <term>pz:timeout</term>
+     <listitem>
+      <para>
+       Specifies timeout for operation (eg search, and fetch) for
+       a database. This overrides the z3650_operation timeout
+       that is given for a service. See <xref linkend="service-timeout"/>.
+      </para>
+      <note>
+       <para>
+       The timeout facility is supported for Pazpar2 version 1.8.4 and later.
+       </para>
+      </note>
+     </listitem>
+    </varlistentry>
+
     <varlistentry id="pzurl">
      <term>pz:url</term>
      <listitem>
index fdb7767..dfdffa4 100644 (file)
@@ -1,9 +1,10 @@
-<settings target="localhost:9999/Default">
+<settings target="localhost:9999/Slow">
 
   <!-- Simple test against a local test server (could be yaz-ztest) -->
 
   <set name="pz:name" value="Local Test"/>
   <set name="pz:apdulog" value="0"/>
+  <set name="pz:timeout" value="10"/>
 
   <!-- mapping for unqualified search -->
   <set name="pz:cclmap:term" value="u=1016 t=l,r s=al"/>
index 60553fd..ad2d2a3 100644 (file)
@@ -921,11 +921,13 @@ int client_start_search(struct client *cl)
     const char *opt_preferred   = session_setting_oneval(sdb, PZ_PREFERRED);
     const char *extra_args      = session_setting_oneval(sdb, PZ_EXTRA_ARGS);
     const char *opt_present_chunk = session_setting_oneval(sdb, PZ_PRESENT_CHUNK);
+    const char *opt_timeout     = session_setting_oneval(sdb, PZ_TIMEOUT);
     ZOOM_query query;
     char maxrecs_str[24], startrecs_str[24], present_chunk_str[24];
     struct timeval tval;
     int present_chunk = 20; // Default chunk size
     int rc_prep_connection;
+    int operation_timeout = se->service->z3950_operation_timeout;
 
     cl->diagnostic = 0;
     cl->record_failures = cl->ingest_failures = cl->filtered = 0;
@@ -933,12 +935,15 @@ int client_start_search(struct client *cl)
     yaz_gettimeofday(&tval);
     tval.tv_sec += 5;
 
+    if (opt_timeout && *opt_timeout)
+        operation_timeout = atoi(opt_timeout);
+
     if (opt_present_chunk && strcmp(opt_present_chunk,"")) {
         present_chunk = atoi(opt_present_chunk);
         yaz_log(YLOG_DEBUG, "Present chunk set to %d", present_chunk);
     }
     rc_prep_connection =
-        client_prep_connection(cl, se->service->z3950_operation_timeout,
+        client_prep_connection(cl, operation_timeout,
                                se->service->z3950_session_timeout,
                                se->service->server->iochan_man,
                                &tval);
index ece8f04..85af04d 100644 (file)
@@ -86,6 +86,7 @@ static char *hard_settings[] = {
     "pz:native_score",
     "pz:memcached",
     "pz:redis",
+    "pz:timeout",
     0
 };
 
index de43d28..cd01937 100644 (file)
@@ -59,7 +59,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #define PZ_NATIVE_SCORE         36
 #define PZ_MEMCACHED            37
 #define PZ_REDIS                38
-#define PZ_MAX_EOF              39
+#define PZ_TIMEOUT              39
+#define PZ_MAX_EOF              40
 
 struct setting
 {