Changes between Initial Version and Version 1 of v5.1


Ignore:
Timestamp:
01/17/12 12:54:43 (10 years ago)
Author:
branden
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • v5.1

    v1 v1  
     1{{{ 
     2Release Notes: Earthworm Version "v5.1" 
     3 
     4NEW MODULES: 
     5 
     6k2ew: Communicates with the K2 data logger from Kinemetrics. Uses TCP or COM port for communication on WindowsNT, TCP or TTY (serial) comms on Unix. See src/data/sources/k2ew/Doc for documentation. 
     7 
     8ringdup: Program to read messages (with user given logos) from one ring and deposit them in another. This is mainly copied from export. This is actually two programs: ringdup_generic and ringdup_scn. 
     9 
     10naqs2ew: Interfaces with the Nanometrics digital data acquisition program, NaqsServer, requests continuous waveform data from a list of SCNs and outputs Earthworm tracebuf packets into an Earthworm transport ring. 
     11 
     12Event Review Using the Earthworm Database: The Event Review provides Earthworm with a remote, rapid event review capability. Its intended use is permit a duty seismologist to rapidly respond to a significant event. It was NOT designed to serve as a routine analysis facility. 
     13 
     14Its features include: 
     15 
     16* Requires only browser access to the Internet. 
     17 
     18* Interacts with events via the Earthworm DBMS. 
     19 
     20* Viewing and editing of automatic event parameters. 
     21 
     22* Graphic re-picking. 
     23 
     24* Event relocation and re-insertion into DBMS. 
     25 
     26* Supports both low- and high-bandwidth connections. 
     27 
     28* Supports interlocks for concurrent reviewers. 
     29 
     30  
     31 
     32MODIFICATIONS/BUG FIXES TO EXISTING MODULES: 
     33 
     34Libsrc Changes: 
     35 
     36libsrc/winnt/sendmail.c: Changed the email message sender from root to root@<MailHost>. 
     37 
     38libsrc/util/sacputaway.c: Changed the low level calls to creat/write to fopen/fwrite in order to write sac files. Previous method would sometimes write sac files (under NT only) with fewer samples than advertised in the header. 
     39 
     40libsrc/util/logit.c: In logit_init(), moved the mutex creation to before the test of the log/nolog switch value so that the mutex is always created. Previously, if switch=0, the mutex was not created and subsequent calls to logit (on NT) caused "error releasing specific mutex" messages to appear. 
     41 
     42Added support for checking/preventing overflows of the logit buffer. Used vsnprintf() (_vsnprintf on NT) to fill a buffer without overflowing it. logit() will now write an error message to the logfile (or to stderr if disk logging is disabled) if a message that is longer than the buffer is attempted to be logged. This required an addition to platform.h. 
     43 
     44include/platform.h 
     45 
     46Added a define for vsnprintf() in the NT section. Removed comments from #define lines to prevent them from causing headaches when the #defines are substituted in code. Before, code that looked like 
     47 
     48/* return((thr_ret)0); */ 
     49 
     50would actually be 
     51 
     52/* return((thr_ret /* This is what a thread returns */)0); */ 
     53 
     54and the compiler would seem to issue a syntax error for no reason. 
     55 
     56libsrc/winnt/transport.c 
     57 
     58libsrc/solaris/transport.c: Fixed tport_putmsg and tport_copyto so that they always release the semaphore before returning or exiting. 
     59 
     60libsrc/util/swap.c: I modified the swap.c functions so that they now work correctly, even with non-byte-alligned data. Warning: In some cases, waveserver may return non-byte-alligned tracebuf messages. This can happen if the tracebuf messages contain odd numbers of 2-byte samples. Caltech has started exporting this kind of data to Menlo Park. 
     61 
     62libsrc/util/socket_ew_common: Fixed incorrect formats in logit calls after select() errors (several places). The error would cause segmentation violations and core dumps. 
     63 
     64libsrc/util/logit: added value `2' to the logflag argument of logit_init(). This value will turn off logging to standard error and standard output. The config file command is typically LogSwitch to access this feature. 
     65 
     66libsrc/util/getutil.c: removed extra `%s' from fprintf statement, identified by Chris Wood. 
     67 
     68libsrc/util/putaway.c: corrected `=' to `==' in two if statements in PA_close(), identified by Chris Woods. 
     69 
     70libsrc/util/socket_ew_common.c: bug fix in recvfrom_ew(). The argument passed to recvfrom was being modified so that it wouldn't work correctly later on. This function does not appear to be used in earthworm at this time. Identified by Chris Wood. 
     71 
     72libsrc/solaris/time_ew.c: Fixed bug where the error return from nanosleep() was not always handled properly. Identified by Chris Wood. 
     73 
     74/libsrc/util/site.c: Changed how the hypoinverse site file is parsed in site_read. Under NT, the 'E' east-west longitude designator was being interpreted as the scientific notation exponent for the decimal minutes portion of the longitude. This ultimately caused allEast longitudes to be interpreted as West longitudes, making it impossible to run binder_ew, eqproc and any other module dependant on site.c in the Eastern Hemisphere. 
     75 
     76ws_clientII libsrc routines: wsSearchSCN claimed to return the first menu with a matching SCN; it actually returned the last menu that matched. This has been fixed. Also, if the menup argument to wsSearchSCN is non-NULL, the search will start with the next menu after *menup; otherwise the search will start with menu_queue->head. Finally, wsGetTraceAscii now takes advantage of this change to wsSearchSCN: if the server returns with a flag (request in gap or outside of tank), another server in the menu queue will be tried. This feature probably should be added to wsGetTraceAscii. Even better, the wave_server should be able to return a complete index list so that traces can be pieced together from several servers if the servers are missing different portions of the trace. 
     77 
     78Transport Changes: 
     79 
     80tport_putmsg assigns and tracks the sequence numbers for each logo. tport_putmsg has a limit to the number of different logos for which it can keep track of sequences numbers (NTRACK_PUT). This has been increased from 20 to 200. The number of logos for which tport_getmsg and toport_copyfrom can track sequence numbers has been increased from 50 to 500. 
     81 
     82Module Changes: 
     83 
     84gaplist: Added MyModuleId command to allow module id to be configured. Added logging and "unerror" msg to statmgr when data is received from a previously dead channel. 
     85 
     86heli_standalone: Fixed bug that prevented plotting traces of 200 SPS data at the maximum update interval (same as MAXMINUTES which is 5) 
     87 
     88waveman2disk: Fixed an interactive user prompt so that the user is now prompted for YYYYMMDDHHMMSS. Minutes were missing before. Fixed missing null string terminator, removed unused variables. Identified by Chris Wood. 
     89 
     90startstop_solaris/startstop.c: Added tests for null strings in parsing the config file (before handing strings to strlen). Now it won't crash when a <Process> command contains unbalanced quotes, but will instead complain of a bad <Process> command. 
     91 
     92sniffwave: Fixed so that it prints 4-byte data properly. 
     93 
     94wave_viewer: v1.22. Fixed problems where wave_viewer displayed data spikes when it received fill values back from wave_serverV. Fixe a problem where wave_viewer would miss-parse the wave_server reply because wave_server is writing a 0x00 character after a block of fill values. Fixed problem where wave_viewer would constantly ask for data from wave_server channels that had no data, thus bogging down the client machine and the wave_server. Introduced a bug where data points returned by wave_server that are equal to 1234567890 will be plotted by wave_viewer as 1234567889. 
     95 
     96carlsubtrig: fixed bugs in readcfg.c and readsubs.c where blank lines in config files were not handled properly. 
     97 
     98wave_serverV: Added signal handler to allow graceful shutdowns without shutting down all of earthworm. In WindowsNT, wave_serverV can be shut down by pressing control-C in the console window of wave_serverV. Doing `restart <pid>' will NOT work: startstop_nt does not use signals for terminating processes. In Solaris, you can use `kill <pid>' or `restart <pid>' to terminate wave_serverV gracefully. Also numerous bug fixes; see the file README.changes in the wave_serverV directory. 
     99 
     100Fixed some bugs identified by Chris Wood: "NotDone" is now initialized before use in index_util.c; fixed possible buffer overruns in server_thread.c. Fixed return value tests for several functions, initialized "isConfigured" flag at end of config-file loop. 
     101 
     102Fixed a bug in server_thread.c that aborted a menu list when an empty tank was encountered. This bug was introduced after v5.0. 
     103 
     104read_index: added a -g flag to list the tank gaps knwon to an index file. This provides a quick way to see the data gaps over the history of a tank file. Suggested by Steve Malone at UofW. 
     105 
     106getmenu: fixed bug where index of outer loop (over list of servers) was also used in several inner loops. This bug had no real effect because currently getmenu has no way of putting more than one server in its list; the out loop could only be traversed one time anyway. 
     107 
     108statmgr: Added check for return status from SendMail(); logs errors now. Added flush of transport ring on startup, so you don't get a bunch of old messages when you restart statmgr. Added the module's ID name (from the earthworm.d file) to messages reporting module death. This will help identify which module has died when you have many instances of one module running, such as k2ew. 
     109 
     110evansassoc: moved a misplaced `return(0)' in Assoc() in doit.c Identified by Chris Wood. 
     111 
     112evanstrig: Supplied several missing arguments to sprintf() call. Identified by Chris Wood. 
     113 
     114eqfilter: Bug fixes: several functions declared int that should have been void. Two calls to `return(-1)' in Processor thread replaced with logit calls explaining the problem and calls to KillSelfThread(). Identified by Chris Wood. 
     115 
     116eqalarm: Bug fix: fixed `auto' declaration of string that was being returned by a function. Identified by Chris Wood. 
     117 
     118export: Bug fix: incorrect return value expected from accept_ew on error; it worked OK on Solaris but not on NT. Identified by Chris Wood. 
     119 
     120sniffring: Modified argument list so that there is no more tracebuf file option -- this can be done more ellegantly with the sniffwave command. Added the possibility to sniff for message with particular logos, including wildcards. The user can specify INST_, MOD_, and TYPE_ strings desired, or omit those and only specify the ring to sniff. Therefore, "sniffring RING_NAME" is equivalent to 
     121 
     122"sniffring RING_NAME INST_WILDCARD MOD_WILDCARD TYPE_WILDCARD". 
     123 
     124q2ew: fixed bug in options.c where the return value of getopt() was char; should be int. Identified by Chris Wood. 
     125 
     126pick_ew: Modified pick_ra.c to calculate coda lengths correctly for non-100hz data. Strictly speaking, the program now works with data for which the sampling rate is a whole number, eg 57.0 samples/sec is ok, 57.3 samples/sec is not ok. 
     127 
     128eqcoda: Modified to use per-channel parameters instead of global params. Per-channel params are read from the pick_ew station file. Eqcoda uses only the SCN, CodaTerm, and ClipCount fields. ClipCount is a new field to the file, specifies the maximum zero-to-peak amplitude in counts for each channel. This field was added specifically for eqcoda to calculate clipping levels. If it is omitted, a default of 2048 is used (this is the maximum counts for a standard Eworm analog channel on a 12-bit digitizer). Pick_ew ignores this field. New configfile command "StaFile filename". If this command is ommitted, eqcoda uses all the global defaults that it used to. 
     129 
     130startstop_nt: Added display option for child process console windows. Previous options were "NewConsole" and "NoNewConsole". New option is "MinimizedConsole". Change should have no impact on current earthworm users. 
     131 
     132hyp2000: Grabbed the latest source code from Fred Klein on 9/11/00. Contains a new command "DUG" which allows one to control which component codes will use gain corrections in the duration magnitude calculation. Also includes fixes to some obscure bugs, probably never seen in normal Earthworm use of hyp2000. 
     133 
     134DBMS RELATED MODULES 
     135 
     136stalist_hinv2ora: fixed a bug which caused elevations over 1000 meters to be inserted incorrectly. 
     137 
     138usnsn_loc2ora: Added functionality to process an NSN deletion message. Such events are now permanently deleted from the DB. 
     139 
     140archive: Added another command line option NOSAVE to allow quick deletion of trace from the DB without saving it. Also, made it so that diagnostic error is printed to the stderr as well as the log file when the Debug flag is set. 
     141 
     142  
     143 
     144CHANGES TO CONFIGURATION FILES and DESCRIPTOR FILES: 
     145 
     146Module Name Length: The limit for module name length has been increased from 20 to 32 characters. 
     147 
     148gaplist.d: New optional command "MyModuleId". 
     149 
     150gaplist.desc: New "error" defined; sent to statmgr when data is received from a previously dead channel. These 2 lines were added to .desc file: 
     151 
     152err: 1 nerr: 1 tsec: 0 page: 0 mail: 3 
     153 
     154text: "Channel alive." 
     155 
     156wave_serverV.d: No new parameters, but several of the comments have been corrected to reflect the actual default values in the code. PNL 6/28/00 
     157 
     158statmgr.d: added comment that the mail program should be a full pathanme if it is specified in the .d file. 
     159 
     160eqcoda.d: New optional command "StaFile filename" to read in per-channel parameters. 
     161 
     162pick_ew station file: New column ClipCount (used by eqcoda, not pick_ew) specifies the maximum zero-to-peak amplitude in counts for each channel. 
     163 
     164All config files: now logging to standard error and standard output may be turned off by setting the LogSwitch (or similar name) to 2. 
     165 
     166DBMS/WEB RELATED CONFIGURATION FILES: 
     167 
     168getlist: Added WebHost option -- should be set to the name of the machine which holds up the web pages and where the web administrator webmaster is located. 
     169 
     170eqparam2html: Added WebHost option -- should be set to the name of the machine which holds up the web pages and where the web administrator webmaster is located. 
     171 
     172ora2rsec_gif: Added WebHost option -- should be set to the name of the machine which holds up the web pages and where the web administrator webmaster is located. 
     173 
     174KNOWN BUGS or DEFICIENCIES: 
     175 
     176Window NT: In Windows NT, the time resolution of sleep_ew() is about 16 msec (one clock tick). On Solaris, the resolution is about 10 msec. This is a problem for ringtocoax, since packet delays need to be set to a few milliseconds. 
     177 
     178Adsend: Automatic restarts of adsend (using the "restartMe" line in the descriptor file) can cause an NT system to hang. Therefore, you should never use the autorestart feature with adsend, but you should bring down the entire Earthworm system if adsend needs to be restarted. Comments added to adsend.desc. 
     179 
     180statmgr: A space is needed between "tsec:" and the value. If it isn't there, things fail. 
     181 
     182threads functions: The KillThread function on WindowsNT and Solaris terminate the thread without ensuring that no mutexes are held. If a threadholds a mutex when it dies, no other thread can get that mutex. 
     183 
     184carlsubtrig: The system time must be set to GMT and ew_nt.cmd must have TZ=GMT in order for carlsubtrig to work. 
     185 
     186arc2trig: on NT, exits with horrible crash when system is stopped. 
     187 
     188ew2seisvole: on NT, exits with horrible crash when system is stopped. 
     189 
     190Wave_viewer will display fictitious 2 to 3 sample gaps when scrolling the display. This does not happen all of the time and is only visible when there are less than 200 samples on the display (2 seconds of data for 100hz data.) 
     191 
     192libsrc/util/putaway.c: there is no include file for the putaway routines, thus any errors in arguments passed to putaway routines are not checked by the compiler. 
     193 
     194Wave_serverV: If a tank file is closed by the main thread while a server thread is accessing it, the next I/O error that the server thread saw would send it to the "abort" section of _writeTraceDataAscii or _writeTraceDataRaw. Here a call to fseek() would fail and lead to an endless loop of failed fseek calls. 
     195 
     196Startstop_solaris: There MAY be a problem with the signal that startstop sends to modules during the shutdown sequence. The shutdown sequence is started (after typing "quit" to startstop or running "pau") by startstop placing a terminate message on all transport rings. Modules should see this message and start their own shutdown. After a configurable delay, startstop checks to see that all modules have exitted. Any that are still running are sent a signal to terminate them. Currently that signal is SIG_TERM. But since wave_serverV has a handler for SIG_TERM, wave_serverV sees that as essentially the same as a terminate message. So if wave_serverV is having problems completing its shutdown, SIG_TERM won't do anything. The result is that startstop may give up and exit, leaving wave_serverV running. If that happens, the operator will have to terminate wave_serverV by doing "kill -9 <wave_serverV-pid>". That may leave shared memory and semaphores stranded in the kernel: run the command "ipcs -a" to see. If necessary, the stranded shared memory and semaphores may be cleaned up with the ipcrc command; must be run as root; see the man page. This problem only exists on Solaris/Unix, not on WindowsNT. 
     197 
     198NUMBER OF RINGS LIMITED ON SOLARIS: 
     199 
     200Under Solaris 2.6 (and probably other versions as well), the maximum number of shared memory segments is six. This means that on an out-of-the-box machine you can only configure six rings. If you try to configure more than that, you will see a cryptic message from tport_create about too many open files. The fix to this problem is to add the following lines to the /etc/system file, and then reboot the system. 
     201 
     202set shmsys:shminfo_shmmax = 4294967295 
     203 
     204set shmsys:shminfo_shmmin = 1 
     205 
     206set shmsys:shminfo_shmmni = 100 
     207 
     208set shmsys:shminfo_shmseg = 20 
     209 
     210set semsys:seminfo_semmns = 200 
     211 
     212set semsys:seminfo_semmni = 70 
     213 
     214This allows for 20 rings. 
     215 
     216  
     217 
     218  
     219 
     220  
     221}}}