placeholder

isbnsearch Z39.50 server verification process

[ Back ] [ Top ]

Verifying the connectivity of each Z39.50 server

To start the verification run

Note: Use of colour in verify.pl.

Note: verify.pl needs Z39.50.

If you've used the user access method of installation of Net::Z3950, you will need to copy verify.pl to the relevant cgi-bin/ where you installed Net::Z3950. You can use the verify.sh bash shell of just change to the directory and change back.

verify.pl has been extended to make it easier to read the (considerable) output but the extension makes certain assumptions about your environment. verify.pl uses non-printing bash characters to produce output in colour. Terminals without colour, using a different shell or other factors may cause problems with the new script. Please report any issues to the mailing list. A workaround would be to simply change the values in the colour subroutine to always use black or white as appropriate, alternatively, you can adapt the subroutine to not output the non-printing characters at all by setting $init, $endit and the various colour strings to blanks. If the colour output is useful, please let me know via the mailing list. The colours are intended to be intuitive:
lines in yellow are details of the server to be tested (similar to amber at traffic lights),
lines in red are errors that cause the server to be omitted or ignored, and
lines in green indicate successful responses from the server.
If your terminal uses a white background, you may prefer to swap the values for yellow and blue to make it easier against a white background. The standard isbnsearch error reports that would be sent via cron when using fallbackisbn.pl or isbnsync.pl are printed in the default text colour but tabbed out of the normal flow. Also in the default colour, if the server locates the ISBN used for the verification query, the fulltitle and publisher details will be printed.

verify.pl will not run in the background!

FAIL errors will cause the verify script to hang. They are usually non-canonical names, socket requests on the defined port are accepted but a Z39.50 connection request is not completed. Unlike other servers that are reported as error="CONN", servers reported as "FAIL" do not allow the $conn=$mgr->connect() call to complete because they return no error values, so the script hangs. You will need to intervene with Ctrl-C to stop and restart the script. It may seem logical to use a timer to halt the script if it hangs. However, with >1,000 servers to verify, there is no way for the shell to tell if the script is working through a "good patch" of 20 or so responsive servers or whether it has hung, the time elapsed would be the same. All attempts to handle the crash within the script have failed as the problem lies deep within the required Perl modules, probably in Net::Z3950 itself. fallbackisbn.pl can handle the same errors using a timer (implemented via cron and a .pid file) because it is only ever connecting to a small number of servers per run.

When you get towards the end of the run, only the failing servers will be left to verify. Keep repeating verify.pl until the script reports:

verification run complete. No more runs required.

Creating the result pages

The format of the server result pages has changed again for the v0.5 release. Displaying the results by interface and separating LoC Gateway listed servers from the AsyncZ list is not useful for isbnsearch. This devel project will aim for more automation and more regular updates using verify.pl.

The result tables are created using scripts and the servers table created above. The fulltext name of the server has now been abandoned, leaving just the more critical name, port and database fields.

The SQL files for the next release and the new servers to upgrade existing sites are both created with this bash script:

bash export-new-servers.sh


[ Back ] [ Top ]

Valid HTML 4.01!

The copyright licensing notice below applies to this text.

Copyright © 2003-2004 Neil Williams

Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of this license is included in the file copying.txt

divider bar SourceForge.net Logo