Changes in the 1.6.3 final release: 2011-03-18 gmc * specify use of the utf8 I/O layer Solves problem where invoking a method via osrf_http_translator resulted in an exception thrown by FreezeThaw if any of the characters in the message are non-ASCII *and* not in the Latin-1 character set. Oddly, if Evergreen been originally developed in Georgia the country, not Georgia the state, the bug would have been apparent much earlier. 2010-12-20 dbs * Straighen out -f / -d flag confusion in libmemcached prerequisite There are two different styles of checking for previously downloaded tarballs in this Makefile; the libmemcached entry combined them both with unfortunate results. 2010-12-16 dbs * Remove extraneous line for dnsmasq / Python Changes in the 1.6.2 final release: 2010-12-16 dbs * README, src/perl/lib/OpenSRF.pm: Bump version to 1.6.2 * .: Tag rel_1_6_2 for release 2010-11-29 erickson * avoid calling sysread when select exited from interruption. 2010-11-28 dbs * Lenny needs zlib1g-dev package to install XML::LibXML and others Per https://rt.cpan.org/Public/Bug/Display.html?id=51439; also, libmemcached failed to configure and build without this. 2010-11-22 erickson * in the rare case the select() is interrupted while waiting on child statuses, exit early to prevent read()'s on invalid file handles and allow the calling code to loop back around and try again 2010-11-05 erickson * socket_bundle typo patch from Jason Stephenson Further discussion and DCO: http://libmail.georgialibraries.org/pipermail/open-ils-dev/2010-November/006476.html 2010-10-26 erickson * consistent w/ the C libs, only log server message processing duration at INFO. log server response processing duration at debug and w/ slighly different wording. let the processing duration log message act as the indication of a successfully handled message to reduce logging 2010-10-25 erickson * log message processing duration at INFO level, instead of DEBUG, consistent with the C libs 2010-10-15 dbs * Include Ubuntu Lucid in the list of supported distributions Changes in the 1.6.1 final release: 2010-10-12 erickson * src/javascript/opensrf.js: when we add xhr responses onto the end of the queue, stash the original session as well, otherwise we're attempting to ask a session questions about requests it's not tracking Changes in the 1.6.0 final release: 2010-09-16 dbs * src/perl/lib/OpenSRF.pm: $VERSION in Perl modules needs to be quoted to avoid breakage We stamp releases when they're rolled, but having it quoted in SVN will help as a reminder at release time. 2010-09-09 dbs * src/perl/lib/OpenSRF.pm: When people check out rel_1_6, they're surprised if the version on the Perl module is 1.4.0 In practice, this doesn't matter for releases as we manually stamp those when the release is tagged. But reducing any amount of concern about it is worthwhile if we can concentrate on bigger issues. Perhaps there's a better way of indicating 1.6.x rather than bumping branches/rel_1_6 and tags/rel_1_6_1 every time there's a release. 2010-09-01 erickson * src/javascript/opensrf.js: added support for reading ContinueStatus opensrf messages in the JS opensrf lib Changes in the 1.6.0 alpha release: 2010-08-23 dbs * .: Tag the OpenSRF 1.6 alpha release * Bring supported distros up to date, warn about Java support * Create rel_1_6 branch for next major OpenSRF release 2010-08-18 erickson * Due to the async nature of xmllhttprequest, processing http responses (which often lead to further async-request laden callbacks) at receive time can result in out-of-order message handling. To bring order to this chaos, push all inbound message onto a queue, then go back to processing the older messages in order of oldest to newest. 2010-08-16 scottmk * A few minor tweaks in the name of const-correctness. M src/router/osrf_router_main.c * Several minor and inconsequential changes: 1. Tidied up the white space in a few places. 2. Commented out several unused functions, used only for development, in order to eliminate some annoying compiler warnings. 3. Added the const qualifier to several variables. 4. Added three branches to a switch/case structure, in order to eliminate some compiler warnings about untested enum values. The new branches merely issue warning messages to the log (presumably we don't expect to see RESULT or STATUS messages in this context). M src/gateway/osrf_http_translator.c 2010-08-15 scottmk * 1. Pedantic change for const-correctness: replaced all calls to jsonObjectGetKey() with calls to jsonObjectGetKeyConst(). 2. Tidied up white space and comments here and there. M src/router/osrf_router_main.c 2010-08-14 scottmk * Pedantic change for const-correctness: change three calls to jsonObjectGetKey() to call jsonObjectGetKeyConst() instead. M src/gateway/osrf_http_translator.c * Pedantic change for const-correctness: replace two calls to jsonObjectGetKey() with calls to jsonObjectGetKeyConst(). M src/libopensrf/osrf_parse_json.c * Minor performance tweak: replace a call to buffer_add() with a call to buffer_add_n(). In this case we already know how many characters to add, so we can avoid a call to strlen(). M src/libopensrf/osrf_prefork.c * Add some macros for upward compatibility from the old JSON parser. These macros map the old functions to the equivalent new ones. M include/opensrf/osrf_json.h * Eliminate the old JSON parser, implemented in osrf_json_parser.c and the associated header osrf_json_utils.h. This parser has been completely replaced by a newer one implemented in osrf_parse_json.c, plus an incremental JSON parser (so far unused) in jsonpush.c.. The even older parser of JSON-with-comments is not affected. D include/opensrf/osrf_json_utils.h M include/opensrf/osrf_json.h D src/libopensrf/osrf_json_parser.c M src/libopensrf/osrf_json_object.c M src/libopensrf/Makefile.json M src/libopensrf/osrf_json_tools.c M src/libopensrf/Makefile.am M src/libopensrf/osrf_parse_json.c M Makefile.am 2010-08-13 dbs * Get the extra_debs into Squeeze as well; fix a typo in libmemcached-tools * Make the names of the rules for installing extra Squeeze debs line up * Make log length in Perl logger a configurable value to assist debugging If logging to syslog instead of a file, you might need to adjust the syslog configuration to accept longer than its own default lengths of log messages 2010-08-13 scottmk * Minor cleanup: Changed two calls to buffer_add(), when appending a single character, to call buffer_add_char() instead, which is slightly more efficient. M src/srfsh/srfsh.c 2010-08-13 dbs * First cut at adding Debian Squeeze to OpenSRF prerequisite installer Along the way, make a few other changes: * drop Debian Etch and Gentoo support * add dscott@laurentian.ca to the author list * remove Class::DBI as that's actually a prereq for Evergreen, not OpenSRF 2010-08-11 scottmk * Adding comments and tinkering with white space. No substantive changes. M src/libopensrf/osrf_prefork.c 2010-08-10 scottmk * Provide a way for a service to set the effective buffer size for a specified method. Non-atomic methods accumulate RESULT messages into a buffer, from which they are flushed when the buffer is about to overflow, or when the closing STATUS message is issued. The new osrfMethodSetBufferSize() function allows the service to favor large buffers (for greater throughput) or small ones (for a lower latency for the first response). Since the buffersize is not an absolute limit, the effective buffer size may be set to zero, in which case each RESULT message will be packaged and sent in a separate XMPP message as soon as it is ready. Changing the buffer size has no effect on an atomic method, nor on a method that returns only one RESULT message. M include/opensrf/osrf_application.h M src/libopensrf/osrf_application.c 2010-08-09 scottmk * Cruft removal; there should be no outwardly visible effects. 1. Remove the OSRF_METHOD_ATOMIC and OSRF_METHOD_SYSTEM options from the interface functions osrfRegisterMethod() and osrfRegisterExtendedMethod(). An application cannot usefully apply these options when it registers a method, and if it tries, it will almost certainly not work as intended anyway. This change required considerable refactoring of the code responsible for registering methods. 2. When the attempt to initialize an application fails, remove the application from the application list and destroy it, instead of keeping it around in an unusable state. 3. Eliminate some redundant lookups of application by name when registering system methods. M include/opensrf/osrf_application.h M src/libopensrf/osrf_application.c * Fixed a bug in the chunking. Short version: The non-atomic system methods weren't working. Now they are. Long version: When a method returns a value greater than zero, a post-processing step sends a STATUS message to signify that the response is complete. In the old code this post-processing bypassed the buffer-flushing step, so that anything still in the buffer didn't get sent. The non-atomic system methods returned positive return codes and were therefore subject to this problem. I don't know if any non-system methods return postive return codes, but if they do, they would also have been affected. M src/libopensrf/osrf_application.c 2010-08-05 gmc * set transaction ID by default to make it easier to trace requests from srfsh Signed-off-by: Galen Charlton 2010-08-04 miker * always use respond_complete to finish a request, whether there is a final message or not 2010-08-04 scottmk * Implement the chunking of OSRF messages. I.e. bundle multiple OSRF messages into an XMPP message, up to about 10k bytes, so as to reduce networking overhead. M include/opensrf/osrf_application.h M src/libopensrf/osrf_application.c 2010-08-03 miker * Mike, when adding the length, actually add the length, not the string 2010-07-29 scottmk * 1. Add a buffer to osrfAppSession structure; for future use 2. New function osrfSendTransportPayload(). This a repackaging of existing functionality pulled out into a separate function so that it can be reused in other contexts. These changes are preparation for future changes, and will have no visible effect by themselves. M include/opensrf/osrf_app_session.h M src/libopensrf/osrf_app_session.c 2010-07-29 miker * Add response chunking support to the Perl implementation of OpenSRF Two new optional paramters to register_method are now supported: * max_chunk_size * max_chunk_count OpenSRF has always supported message bundling, but only respond_complete made use of this fact by sending the final result message and the completion status message in the same XMPP envelope. Now, on a per method basis, RESULT messages can be bundled (cached) until one of three conditions occurs: * The size of the JSON of the RESULT messages matches or exceeds max_chunk_size * The number of RESULT messages cached matches or exceeds max_chunk_count * respond_complete is called (which happens implicitly by returning from a method) Because the overhead of sending multiple XMPP messages far outweighs the caching and cache management costs of chunking, the default for max_chunk_size is set at 10240 bytes (10k). The default for max_chunk_count is 0. To turn off chunking completely, set the max_chunk_size register_method parameter to 0. 2010-07-29 scottmk * 1. Make osrfMessageToJSON() available at global scope. 2. New function osrf_message_set_result() -- a more efficient alternative to osrf_message_set_result_content(). Typically when using the older function, we convert a jsonObject to JSON text, and then parse the JSON text back into a jsonObject. With the new function we can avoid the round trip through the text format. M include/opensrf/osrf_message.h M src/libopensrf/osrf_message.c 2010-07-13 dbs * Whitespace / description cleanup * Teach opensrf-perl.pl the same PID directory as osrf_ctl.sh This should cut down on one more command-line option when working with individual Perl services. * Typo fix to display all OpenSRF methods: sysemt -> system