3 * .: Create rel_2_0 branch for next major OpenSRF release
7 * Limit list of Python services to those within the domain-specific activeapps
10 Fix up help with correct default PID directory and document list_all action
14 * If an alternate config file is pointed to in osrf_ctl.sh, respect it
16 In a previous edit, I accidentally removed the config file option
17 from the start_python command, which would break if anything other
18 than the configured default config file was specified as an option to
19 osrf_ctl.sh. This makes opensrf.py once again respect the authority
22 * Use the same PID directory as the opensrf-perl.pl and opensrf.py scripts
24 The default PID directories for the opensrf-perl.pl and opensrf.py scripts
25 was /openils/var/run/opensrf (assuming a prefix of '/openils'), while the
26 default PID directory for osrf_ctl.sh was /openils/var/run. This complicated
27 matters when trying to restart individual Python or Perl services, as without
28 passing an explicit PID directory argument the restart command from the
29 language-specific script would check for a PID in a different PID directory,
30 find none, and end up running a second copy of the service instead of
31 restarting the existing service.
33 The change groups all PIDs in the 'run/opensrf' subdirectory to avoid any
34 PID file conflicts (as unlikely as that might be) if OpenSRF is installed
35 in the default location - so rather than /var/local/run/*.pid, one will
36 be able to look at /var/local/run/opensrf/*.pid
40 * Add the sanity-saving step of a munged PERL5LIB to the README
42 Thanks for the nudge from Thomas Berezanksy!
44 * Commit some unit tests for Python osrf.json module
46 Recommendation: add *_test.py scripts that mirror each
47 osrf.* module in src/python/tests. Boo-yah.
53 * Use the right variable name in to_json_raw()
54 * PEP8 compliance for variable naming
56 * Simpler __tabs() implementation
58 * A solution for starting all Python services: make sh do the work
60 * Enhanced do_start() implementation in Python management script
62 Unclean shutdowns and fork() misery can create PID files that have
63 no actual process behind them. Instead of just trusting the PID file, check
64 for the running PID; if the process is not running, then remove the PID file
65 and actually start the service.
67 * Assign, don't test equality (thanks berick)
69 * Make start_all automatically daemonize services
71 * Give opensrf.py reasonable defaults for options
74 opensrf.py -l -d -f /openils/conf/opensrf_core.xml -p /openils/var/run/ -a
78 opensrf.py -l -d -a start_all
80 Isn't that better? Note that we put the PIDs into PID_DIR/run/opensrf/
81 so that if/when OpenSRF is installed outside of the /openils/ prefix,
82 the names of the processes won't conflict with any other application PIDs.
83 Unlikely, but you never know.
85 * Try not to stomp on global variable names and built-ins, add docstrings
87 * Typos: s/wait_for_child/try_wait_child/ and s/min_childen/min_children/
89 * Typo: Pass in the array of servers to the memcached client if we have one
91 * Reference constants properly
93 * Make pylint happier with PEP8-compliant argument name
95 * Fix daemonize problem that surfaced in start_all
97 Thanks to Michael Giarlo for reporting the problem, Bill Erickson
98 for pointing the way to the solution, and http://bugs.python.org/issue5313
99 for providing me with more context for the problem & solution.
101 * More debuggery for the spawning of child processes
103 * Minutes and months were reversed in Python logging timestamps
105 * Add a Python and curl example of invoking the Perl simpletext services
107 * Add a streaming version of the split() method in simpletext example
111 * Make opensrf-perl.pl handle missing configuration for services more gracefully
113 As we might want to ship configuration files with commented out sections,
114 this will alert the user that a service was listed in the hosts section
115 but the configuration for that service could not be found.
119 * Patch from Michael Giarlo to integrate python service control into osrf_ctl.sh.
121 I made the following additional changes:
123 1. copy opensrf.py into the BIN dir during install when --enable-python is used.
125 2. osrf_ctl.sh will not attempt to control python services when python is not
128 * patch from Michael Giarlo for better sanity checking during settings file
129 reading in python (avoid #comment's)
131 * added osrf.apps to installed pachages (thanks for the tip, dbs). bumped version
134 * socket_bundle typo patch from Jason Stephenson
136 Further discussion and DCO:
138 http://libmail.georgialibraries.org/pipermail/open-ils-dev/2010-November/006476.html
142 * consistent w/ the C libs, only log server message processing duration at INFO.
143 log server response processing duration at debug and w/ slighly different
144 wording. let the processing duration log message act as the indication of a
145 successfully handled message to reduce logging
149 * log message processing duration at INFO level, instead of DEBUG, consistent with
154 * Plug a minor memory leak that could occur when we opened a TCP connection
155 to a server. In practice this meant whenever we opened a Jabber session.
157 We call getaddrinfo() to get a dynamically allocated linked list of
158 addresses for a given server name. Then we traverse the list, looking
159 for one that accepts streaming connections over IPV4, in order to get
162 At the end, we call freeaddrinfo() to free the linked list.
164 Previously we would pass to freeaddrinfo() a pointer, not to the
165 head of the list, but to the node that we used for getting an IP
166 address. Prior nodes, if any, would leak.
168 Also: added calls to freeaddrinfo() in the case of early returns, to
169 avoid leaking the list in the event of an error.
171 M src/libopensrf/socket_bundle.c
175 * implemented an optional per-service stderr log for capturing miscellaneous
176 stderr output from services, similar to the old-style _unix.log files, since
177 there are often useful warnings and error messages that never bubble up to
178 syslog. for clarity, the files now use _stderr as a suffix instead of _unix.
179 stderr logs are enabled by default. included opensrf.xml example of how to
180 disable it for a given service
182 * when we add xhr responses onto the end of the queue, stash the original session
183 as well, otherwise we're attempting to ask a session questions about requests
188 * in json encoder, replace 2 sub calls w/ 1 hash lookup in heavily called code
189 path. we lose some abstraction, but it's probably worth it here
193 * Work around a Net::Domain bug that can result in fqdn's like
194 foo.example.com,bar.com
196 The bug manifested when trying to run autogen.sh, with the output:
198 No Response from settings server...going to sleep
200 This was because SettingsParser was generating invalid XPath and consquently
201 errors in the opensrf.settings service; with no response, the attempt to run
202 autogen.sh would die.
204 This workaround splits the fqdn on commas and tries each possible domain in
205 the server setting XPath. Long term we either need to wait for Net::Domain
206 bug #60729 (https://rt.cpan.org/Public/Bug/Display.html?id=60729) to be
207 resolved, or consider alternatives.
211 * return the trace-augmented message as written to the log
215 * removing vestigial references to Inbound.pm, which no longer exists in the
216 repository. this also removes get/set_listener, which were never taken advantage
217 of and are no longer of use since the listener is thoroughly hard-coded into the
222 * Bump trunk version number for OpenSRF up to 1.8.0; better than 1.4.0.
224 perlmodstyle says "A correct CPAN version number is a floating point
225 number with at least 2 digits after the decimal." so we're not in
226 compliance in any case. Oh well.
230 * Update the manifest for Perl modules to avoid build warnings
232 r2016 removed two Perl modules,
233 src/perl/lib/OpenSRF/Transport/SlimJabber/Inbound.pm
234 and src/perl/lib/OpenSRF/UnixServer.pm, and the build gets upset because the
235 manifest suggests they're missing. But no, we know where they are, and we
236 don't expect them to come back.
240 * added support for reading ContinueStatus opensrf messages in the JS opensrf lib
244 * updated mailing address of the FSF
246 * remove executable bit from module files that don't need it
248 Small nit to pick for Debianization.
252 * Replace Net::Server with local pre-forking server
254 Support max/min children and max/min spare children
256 http://libmail.georgialibraries.org/pipermail/open-ils-dev/2010-May/006068.html
260 * remove ntp and ntpdate dependencies
262 Not used by OpenSRF; these are legacies of
263 Evergreen dependencies at the time OpenSRF was
264 split off. Quite likely a bunch of deps in
265 Makefile.install aren't needed by OpenSRF