1 Changes in the 1.6.3 final release:
5 * specify use of the utf8 I/O layer
7 Solves problem where invoking a method via osrf_http_translator
8 resulted in an exception thrown by FreezeThaw if any of the characters
9 in the message are non-ASCII *and* not in the Latin-1 character
10 set. Oddly, if Evergreen been originally developed in Georgia the
11 country, not Georgia the state, the bug would have been apparent much earlier.
15 * Straighen out -f / -d flag confusion in libmemcached prerequisite
17 There are two different styles of checking for previously downloaded
18 tarballs in this Makefile; the libmemcached entry combined them both
19 with unfortunate results.
23 * Remove extraneous line for dnsmasq / Python
25 Changes in the 1.6.2 final release:
29 * README, src/perl/lib/OpenSRF.pm: Bump version to 1.6.2
31 * .: Tag rel_1_6_2 for release
35 * avoid calling sysread when select exited from interruption.
39 * Lenny needs zlib1g-dev package to install XML::LibXML and others
41 Per https://rt.cpan.org/Public/Bug/Display.html?id=51439; also,
42 libmemcached failed to configure and build without this.
46 * in the rare case the select() is interrupted while waiting on child statuses,
47 exit early to prevent read()'s on invalid file handles and allow the calling
48 code to loop back around and try again
52 * socket_bundle typo patch from Jason Stephenson
54 Further discussion and DCO:
56 http://libmail.georgialibraries.org/pipermail/open-ils-dev/2010-November/006476.html
60 * consistent w/ the C libs, only log server message processing duration at INFO.
61 log server response processing duration at debug and w/ slighly different
62 wording. let the processing duration log message act as the indication of a
63 successfully handled message to reduce logging
67 * log message processing duration at INFO level, instead of DEBUG, consistent with
72 * Include Ubuntu Lucid in the list of supported distributions
74 Changes in the 1.6.1 final release:
78 * src/javascript/opensrf.js: when we add xhr responses onto the end of the queue,
79 stash the original session as well, otherwise we're attempting to ask a session
80 questions about requests it's not tracking
82 Changes in the 1.6.0 final release:
86 * src/perl/lib/OpenSRF.pm: $VERSION in Perl modules needs to be quoted to avoid
89 We stamp releases when they're rolled, but having it quoted in SVN
90 will help as a reminder at release time.
94 * src/perl/lib/OpenSRF.pm: When people check out rel_1_6, they're surprised if the
95 version on the Perl module is 1.4.0
97 In practice, this doesn't matter for releases as we manually stamp those
98 when the release is tagged.
100 But reducing any amount of concern about it is worthwhile if we can
101 concentrate on bigger issues. Perhaps there's a better way of indicating
102 1.6.x rather than bumping branches/rel_1_6 and tags/rel_1_6_1 every time
107 * src/javascript/opensrf.js: added support for reading ContinueStatus opensrf
108 messages in the JS opensrf lib
110 Changes in the 1.6.0 alpha release:
114 * .: Tag the OpenSRF 1.6 alpha release
116 * Bring supported distros up to date, warn about Java support
118 * Create rel_1_6 branch for next major OpenSRF release
122 * Due to the async nature of xmllhttprequest, processing http responses (which
123 often lead to further async-request laden callbacks) at receive time can result
124 in out-of-order message handling. To bring order to this chaos, push all inbound
125 message onto a queue, then go back to processing the older messages in order of
130 * A few minor tweaks in the name of const-correctness.
132 M src/router/osrf_router_main.c
134 * Several minor and inconsequential changes:
136 1. Tidied up the white space in a few places.
138 2. Commented out several unused functions, used only for development,
139 in order to eliminate some annoying compiler warnings.
141 3. Added the const qualifier to several variables.
143 4. Added three branches to a switch/case structure, in order to
144 eliminate some compiler warnings about untested enum values. The
145 new branches merely issue warning messages to the log (presumably
146 we don't expect to see RESULT or STATUS messages in this
149 M src/gateway/osrf_http_translator.c
153 * 1. Pedantic change for const-correctness: replaced all calls to
154 jsonObjectGetKey() with calls to jsonObjectGetKeyConst().
156 2. Tidied up white space and comments here and there.
158 M src/router/osrf_router_main.c
162 * Pedantic change for const-correctness: change three calls to
163 jsonObjectGetKey() to call jsonObjectGetKeyConst() instead.
165 M src/gateway/osrf_http_translator.c
167 * Pedantic change for const-correctness: replace two calls to
168 jsonObjectGetKey() with calls to jsonObjectGetKeyConst().
170 M src/libopensrf/osrf_parse_json.c
172 * Minor performance tweak: replace a call to buffer_add()
173 with a call to buffer_add_n().
175 In this case we already know how many characters to add,
176 so we can avoid a call to strlen().
178 M src/libopensrf/osrf_prefork.c
180 * Add some macros for upward compatibility from the old JSON parser.
182 These macros map the old functions to the equivalent new ones.
184 M include/opensrf/osrf_json.h
186 * Eliminate the old JSON parser, implemented in osrf_json_parser.c and
187 the associated header osrf_json_utils.h.
189 This parser has been completely replaced by a newer one implemented
190 in osrf_parse_json.c, plus an incremental JSON parser (so far
191 unused) in jsonpush.c..
193 The even older parser of JSON-with-comments is not affected.
195 D include/opensrf/osrf_json_utils.h
196 M include/opensrf/osrf_json.h
197 D src/libopensrf/osrf_json_parser.c
198 M src/libopensrf/osrf_json_object.c
199 M src/libopensrf/Makefile.json
200 M src/libopensrf/osrf_json_tools.c
201 M src/libopensrf/Makefile.am
202 M src/libopensrf/osrf_parse_json.c
207 * Get the extra_debs into Squeeze as well; fix a typo in libmemcached-tools
209 * Make the names of the rules for installing extra Squeeze debs line up
211 * Make log length in Perl logger a configurable value to assist debugging
213 If logging to syslog instead of a file, you might need to adjust the
214 syslog configuration to accept longer than its own default lengths of
221 Changed two calls to buffer_add(), when appending a single character,
222 to call buffer_add_char() instead, which is slightly more efficient.
228 * First cut at adding Debian Squeeze to OpenSRF prerequisite installer
230 Along the way, make a few other changes:
231 * drop Debian Etch and Gentoo support
232 * add dscott@laurentian.ca to the author list
233 * remove Class::DBI as that's actually a prereq for Evergreen, not OpenSRF
237 * Adding comments and tinkering with white space.
238 No substantive changes.
240 M src/libopensrf/osrf_prefork.c
244 * Provide a way for a service to set the effective buffer size for a
247 Non-atomic methods accumulate RESULT messages into a buffer, from which
248 they are flushed when the buffer is about to overflow, or when the
249 closing STATUS message is issued.
251 The new osrfMethodSetBufferSize() function allows the service to favor
252 large buffers (for greater throughput) or small ones (for a lower
253 latency for the first response).
255 Since the buffersize is not an absolute limit, the effective buffer
256 size may be set to zero, in which case each RESULT message will be
257 packaged and sent in a separate XMPP message as soon as it is ready.
259 Changing the buffer size has no effect on an atomic method, nor on a
260 method that returns only one RESULT message.
262 M include/opensrf/osrf_application.h
263 M src/libopensrf/osrf_application.c
267 * Cruft removal; there should be no outwardly visible effects.
269 1. Remove the OSRF_METHOD_ATOMIC and OSRF_METHOD_SYSTEM options
270 from the interface functions osrfRegisterMethod() and
271 osrfRegisterExtendedMethod().
273 An application cannot usefully apply these options when it registers
274 a method, and if it tries, it will almost certainly not work as
277 This change required considerable refactoring of the code
278 responsible for registering methods.
280 2. When the attempt to initialize an application fails, remove
281 the application from the application list and destroy it,
282 instead of keeping it around in an unusable state.
284 3. Eliminate some redundant lookups of application by name
285 when registering system methods.
287 M include/opensrf/osrf_application.h
288 M src/libopensrf/osrf_application.c
290 * Fixed a bug in the chunking.
292 Short version: The non-atomic system methods weren't working. Now
295 Long version: When a method returns a value greater than zero, a
296 post-processing step sends a STATUS message to signify that the
297 response is complete. In the old code this post-processing
298 bypassed the buffer-flushing step, so that anything still in the
299 buffer didn't get sent.
301 The non-atomic system methods returned positive return codes and
302 were therefore subject to this problem. I don't know if any
303 non-system methods return postive return codes, but if they do,
304 they would also have been affected.
306 M src/libopensrf/osrf_application.c
310 * set transaction ID by default to make it easier to trace requests from srfsh
312 Signed-off-by: Galen Charlton <gmc@esilibrary.com>
316 * always use respond_complete to finish a request, whether there is a final
321 * Implement the chunking of OSRF messages. I.e. bundle multiple
322 OSRF messages into an XMPP message, up to about 10k bytes, so
323 as to reduce networking overhead.
325 M include/opensrf/osrf_application.h
326 M src/libopensrf/osrf_application.c
330 * Mike, when adding the length, actually add the length, not the string
334 * 1. Add a buffer to osrfAppSession structure; for future use
336 2. New function osrfSendTransportPayload(). This a repackaging of
337 existing functionality pulled out into a separate function so that
338 it can be reused in other contexts.
340 These changes are preparation for future changes, and will have no
341 visible effect by themselves.
343 M include/opensrf/osrf_app_session.h
344 M src/libopensrf/osrf_app_session.c
348 * Add response chunking support to the Perl implementation of OpenSRF
350 Two new optional paramters to register_method are now supported:
354 OpenSRF has always supported message bundling, but only respond_complete made
355 use of this fact by sending the final result message and the completion status
356 message in the same XMPP envelope. Now, on a per method basis, RESULT messages
357 can be bundled (cached) until one of three conditions occurs:
359 * The size of the JSON of the RESULT messages matches or exceeds max_chunk_size
360 * The number of RESULT messages cached matches or exceeds max_chunk_count
361 * respond_complete is called (which happens implicitly by returning from a
364 Because the overhead of sending multiple XMPP messages far outweighs the caching
365 and cache management costs of chunking, the default for max_chunk_size is set
366 at 10240 bytes (10k). The default for max_chunk_count is 0. To turn off chunking
367 completely, set the max_chunk_size register_method parameter to 0.
371 * 1. Make osrfMessageToJSON() available at global scope.
373 2. New function osrf_message_set_result() -- a more efficient alternative
374 to osrf_message_set_result_content().
376 Typically when using the older function, we convert a jsonObject to JSON
377 text, and then parse the JSON text back into a jsonObject. With the new
378 function we can avoid the round trip through the text format.
380 M include/opensrf/osrf_message.h
381 M src/libopensrf/osrf_message.c
385 * Whitespace / description cleanup
387 * Teach opensrf-perl.pl the same PID directory as osrf_ctl.sh
389 This should cut down on one more command-line option when working
390 with individual Perl services.
392 * Typo fix to display all OpenSRF methods: sysemt -> system