Pythomnic3kChangelog
version 1.2, rel. Dec 6, 2010
• Logging priority can be changed at runtime,
no need to restart a cage.
• Request timeouts can be specified on per-interface basis.
This way for example requests from a synchronous HTTP interface may have their
deadline in 10 seconds, and requests for processing incoming JMS messages -
in 30 seconds.
• Resource pools can be configured to be kept warm, i.e. having a few
free instances always connected.
• Changed the way logging works. Now each request has a readable
description which is included in its logging messages.
Request's remaining time to live is also included.
• Added support for custom acceptance methods for transactions.
Acceptance method receives intermediate results of the resources
participating in the transaction and decides what to do with them.
It can perform tricks such as:
1. Pick the fastest result and return transaction result early without waiting for all participants to return. 2. Deduce the result by voting despite occasional failures. 3. Mask irrelevant failures. etc.
• Changed the way transactions and resources report errors.
Now if a transaction fails, it throws ResourceError, which
contains failure information in a uniform way.
• Retried call queues can be configured to maintain
FIFO order, a failed call will remain in front of
the queue and retried.
• Added configurable file permissions when files are being
saved to a shared directory using file resource.
• Email protocol now supports sending (SMTP) and receiving (POP3)
messages over SSL.
• Oracle SQL resources return all numbers as Decimals, never ints,
making no attempt to deduce type information from the values.
• Unknown SMPP optional tags on incoming PDUs are ignored,
rather than cause a parsing failure. One awkward SMPP SMSC kept
sending optional tags from SMPP 5.0 to SMPP 3.4 client which
Pythomnic3k is.
• GREATLY simplified the request creation logic. This is of use
for anyone who is going to implement some protocol support for
Pythomnic3k.
• Added CPU, memory statistics to cage performance web page.
• Request context is preserved between cages verbatim,
not modified across RPC calls.
• Persistent state is disabled if free disk space falls
below configured threshold. Note that this affects
retried calls too.
• Python 3.2 compatibility fixes.
version 1.1, rel. Jun 1, 2010
• Added support for "reverse RPC" where target cage polls the source for incoming
calls. This is useful in DMZ scenarios when a service from DMZ needs to call the one
from LAN, but TCP connections from DMZ to LAN are prohibited by the firewall.
• Switched persistent RPC message sending syntax from
pmnc("target_cage:retry").module.method()
to
pmnc("target_cage", queue = "retry").module.method()
• Support multiple persistent retry queues using
pmnc("target_cage", queue = "queue_name")
where each queue may have its own retry interval and expiration settings.
• Results of SQL requests (recordsets) returned from database resources
are no longer lists of field name-value dicts, but instead lists of
instances of special class SQLRecord which contains the same name-value
pairs, but allows case-insensitive field reference so that
rec["name"] == rec["NAME"] == rec["nAmE"]this is useful with Oracle.
• HTTP protocol request handler now has control over cache-related response
header fields.
• Performance monitoring web page now displays configurable amount of
application messages, not always last 100 as before.
version 1.0, rel. Sep 14 2009• Initial release. |