Red Deer

From MeLibraries Wiki
Revision as of 09:45, 21 May 2014 by Eplils (Talk | contribs) (Sub-system Services)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Contact information

Site project manager

Nicole Charles ncharles(at)

Circ Point of contact

To be determined.

Technical point of contact

Robert Bastell rbastell(at)



Red Deer Public Library Downtown Branch
4818 - 49th Street
Red Deer, AB, Canada
T4N 1T9


ILS: Symphony and SIP2
Platform: Windows 2008 R2 Server
Database: Microsoft SQL Server 2008 R2
Pseudo UNIX Environment: GNUWin32 and CygWin32 (Both required by multiple vendors.)
Metro Port: Not Currently Enabled

Test environment does exist which is a hardware copy of the production system. The differences are the vendor software/services that are running on production do not exist in test due to licensing and vendor not making this testing method available for use.

Test patrons

PIN (common for all):
Patron in good standing barcode:
Suspended patron barcode:
Patron whose account has expired:
Non-resident patron:
Juvenile patron:
LOSTCARD patron:

Sub-system Services

  • Email
    • Blat (Vendor Required)
    • James SMTP Server
  • Java Servlet Engine
    • Tomcat 6.0.24 (Vendor Required)

Potential Stumbling Blocks / Previous Experience with Vendor Products

Symphony on Windows MSSQL

Unix Environment != Windows Environment

script commands !== cmd.exe script commands

Outstanding Issues/Experiences

Note: I include these as reference due to their nature being very similar to the AWB system and Symphony on Windows/MSSQL. A lot of the troubles we went through could easily occur again if not considered because of the simplicity and ease of building on linux/UNIX and the end result of forcing a square peg through a round hole.

Mishandled Command Argument List

Vendor is using a Tomcat Java Servlet to construct a string to pass to the cmd.exe interpreter using the "/C" argument. The string consisted of a Sirsi API command and associated arguments. The vendor had not considered the impact of non-alphanumeric character's in the data values of the arguments or newlines and the end result was incorrectly called Sirsi API without all the arguments and argument data applied.


Note: This is a simple example to show impact.

cmd.exe /c "echo "hi there" and "how are you"

"hi there" and "how are you

Note: Result is a missing ".

Currently the one vendor has done a better job of "wrapping" their Sirsi API commands and subsequent arguments.

Mishandled Child Process Management

Vendor chained together multiple Sirsi API calls (some perl and some *.sh style processes) inside of the Windows Console environment. Processes failed without properly being handled by either the parent calling process or in the event of the children process, exiting properly when the parent calling process failed. The system had to maintain these lost process trees creating a resource lock until all the "zombie" processes where killed individually or the system was restarted.

Novice Error Handling/Logging

Vendor code relies on UNIX style error handling or non-native Windows error/system logging management. Exceptions do not directly interact with the native error mechanism in Windows.

Perl Example:

if (/* Some condition. */) {
  /* cut */
} else {
  printf(stderr "ERROR: Error message.\n");

If the error "else" block is reached and the stderr resource is not defined it will output to no where advantageous for troubleshooting or future reference. Even in the event that execution of a perl script includes writing to a log file as part of the script itself, writes to the error log will fail if execution exits without completion. The Windows error system will report the *.pl script failed but will not pass why.

Pandora's Box of Paths

Vendor's, as part of their installation package, have installed 2x Pseudo UNIX environments. The resulting path allows for vendor incompatible crossover.

The following directory listings are for "cat.exe", a function used in piping input and output to stepped Sirsi API calls by both vendors. Without path predication the first one in the path list will always be called.

dir d:\cygwin\bin\cat.exe

04/20/2005  06:41 PM            62,464 cat.exe

dir d:\sirsi\gnuwin32\bin\cat.exe

02/06/2012  06:59 AM            36,878 cat.exe