Siena - Software

Siena (Scalable Internet Event Notification Architecture) is a research project aimed at designing and constructing a generic scalable event notification service. For full details on the Siena project follow this link. This page contains a change log for the Siena software packages. Siena software is available for download here.

Change Log

17 May 2015
Released version 2.0.4 of the Siena API and router implementation.

Change log:

  • Implemented greater-or-equals and less-than-or-equals constraints for integers
  • Minor code and documentation clean-up
  • Much overdue changes to adapt to current templetized collection classes: removed uses of "raw" iterators and collections, without specific template types; added collection iterations.
  • (PredicatesTableEntry) changed to use array-list of Bloom filters and a more efficient algorithm to add new Bloom filters.
  • (dvdrp.Hash) fixed encoding of negative-value bytes.
  • (test.siena.dvdrp.TestBloomFilter) added regression test for encoding of non-ascii names that contain negative-value bytes.
  • (SFFTable) implemented specialized counters map.
    20 June 2012
    Released version 2.0.3 of the Siena API and router implementation.

    Change log:

    • (DVDRPDispatcher) fixed bug when UDP connectors are used and route updates are lost.
    • (DVDRPControl) added ability to read commands from a configuration file.
    • (build process)
    • (general) some code cleanup.
    • (test) added new topology setup script to replaces old and faulty one; modified some test scripts to run under ant.
    • (documentation) added INSTALL.ant to document ant build.
    3 February 2012
    Released version 2.0.2 of the Siena API and router implementation.

    Change log:

    • (Two-priority queue) changed dequeuing policy to avoid starvation of the low-priority queue, which is used to process "slow-path" packets. We now give the low-priority queue a maximum penalty N such that a packet sitting at the head of the low-priority queue will never be ignored more than N times. The maximum penalty is dynamically and statically configurable. (Note:It might even be a bad idea to have this two-priority processing scheme giving low priority to some slow-path packets.)
    • (build and source structure) simple cleaned-up: added top_builddir, removed unused source files.
    • (DVDRPDispatcher, HierarchicalDispatcher) Logging: using simple strings and `+' operator to concatenate them in logging messages instead of StringBuffer and `append'. This is for readability but also for efficiency.
    • (documentation) moved and expanded installation instructions into a separate INSTALL file; fixed small typo in doc/overview.html; removed doc on how to use local Siena access point, so now only mentioning ThinClient.
    3 November 2011
    Released version 2.0.0 of the Siena API and router implementation. This is a new major release. The most salient feature of this release is a new router architeture that supports a general network architecture and topology. This new implementation of the Siena router (or "server" or "broker") also includes a fast forwarding algorithm.
    9 Jul 2008
    released version 1.5.5 of the Java language API and server.

    Change log:

    • (KAPacketSender/Receiver) some bug-fixes and restructuring. A critical run was causing a null-pointer exception that was erroneously masked by the receiver. This is also an attempt to simplify and improve the architecture of the receiver: the connection-handling methods are now synchronized on the entire object, whereas before they were in part synchronized on the connection-pool. The receiver algorithm is also a bit simpler: first try to get a connection from the pool, then try to accept a new connection.
    • (tests/util.sh) fixed a small problem, presumably exposed by a new version of the shell, that was breaking some tests.
    • (AttributeValue::isEqualTo) bug-fix. We now correctly use array-comparison for byte arrays. Patch suggested by Zbigniew Jerzak (TU-Dresden).
    • (covering relations) bug-fix. Symptom: x<=5 does not to cover x<5. Bug found and fixed by Zbigniew Jerzak (TU-Dresden).
    9 May 2006
    released version 1.5.4 of the Java language API and server.

    Change log:

    • fixed bug in unsubscribe() for only-local subscribers.
    • added stream position reference for SENP format errors.
    • improved some test drivers.
    31 January 2005
    released version 1.5.3 of the Java language API and server.

    Change log:

    • simplified and fixed makefile rule to build documentation.
    • changed URLs to www.cs.colorado.edu, now to serl.cs.colorado.edu;
    • fixed bad links to examples.
    27 October 2004
    released version 1.5.2 of the Java language API and server.

    Change log:

    • fixed a bug in HierarchicalDispatcher that affected the delivery of notifications to local subscribers. Thanks to Anton Michlmayr <[email protected]>.
    14 September 2004
    released version 1.5.1 of the Java language API and server.

    Change log:

    • fixed bug in subscription poset. The problem occurs when a new subscription is inserted on top of (i.e., covering) an existing root subscription. In this case, the insertion function failed to remove the existing subscription from the roots set. Thanks a lot to J�rgen Andreas Michaelsen <[email protected]> for reporting a test that highlights the bug.
    • fixed bug in the initialization of SENPBuffers that caused decodeXyz methods to fail.
    • changed Notification.toString and Filter.toString to use encodeSimple. This encoding does not include the "event" and "filter" keywords, respectively, and therefore makes the Notification.toString and Filter.toString methods compatible with SENP.decodeNotification and SENP.decodeFilter, respectively.
    28 November 2003
    released version 1.5.0 of the Java language API and server.

    Change log:

    • simplified client-master protocol. Eliminated WHO/INF exchange between clients and masters. This change simplifies the initial client-master connection reducing the number of messages and removing the need to have globally unique identifiers. WARNING: this new protocol is not compatible with previous versions.
    • added notification input/output sequencer. Sequencers can be used to deliver notifications in the order they were published. (See documentation of NotificationInputSequencer and NotificationOutputSequencer)
    • fixed and improved monitoring facility, now fully compatible with the Siena Monitor (see http://www.cs.colorado.edu/serl/siena/smon/)
    • various small corrections and improvements to Makefile and tests/Makefile
    12 December 2002
    released version 1.4.3 of the Java language API and server.

    Change log:

    • fixed bug in the cleanup function of HierarchicalDispatcher that caused a communication exception. Thanks to Phil Varner <[email protected]>
    • fixed other synchronization issues in cleanup functions to prevent erroneous removal of active interfaces. Thanks to Rich Honhart <[email protected]> and Aaron M. Crickenberger <[email protected]>.
    • improved shutdown() for KAPacketReceiver that compensates for lost close exception at the TCP level for some Java implementations.
    • fixed ssl communication tests
    • added constructor in ThinClient that takes user-specified identifier
    • added getIdentity() method to ThinClient
    • added exception to setMaster() when the first connection to the new master fails (suggested by Michael Frank <[email protected]>)
    • grouped interface management into IFManager class and contacts management into ContactsTable class
    • fixed and improved serialization of Notifications and Filters. Thanks to Mauro Caporuscio <[email protected]>
    • minor fixes and additions in documentation.
    11 June 2002
    released version 1.4.2 of the Java language API and server.

    Change log:

    • fixed bug in receivers, reporting wrong address (0.0.0.0)
    • finalized restructuring of HierarchicalDispatcher with Interface class. Fixed missing reference counter increment.
    • finalized subscriptions persistence mechanism: added documentation, added configuration parameters, added check for invalid subscribers, and added test
    • minor fixes in tests and makefiles
    • minor fixes in documentation.
    14 April 2002
    released version 1.4.1 of the Java language API and server.

    Change log:

    • compiled and tested under Java 1.4.0
    • fixed minor bug in test programs
    • initial restructuring of HierarchicalDispatcher with Interface class
    • reuseable senders
    • cleanup function for interface table and contacts
    • added configure test for JSSE (ssl) features
    • added configure option to set CLASSPATH
    • fixed minor bugs in package documentation overview files
    12 March 2002
    released version 1.4.0 of the Java language API and server.

    Change log:

    • restructuring into packages: now the communication components (packet senders and receivers) are isolated in the siena.comm package
    • added basic communication security through SSL receiver/sender pair.
    • much improved common testing infrastructure. All tests have been adapted to this uniform framework
    • minor changes in PacketSender interface: added shutdown() method.
    • minor changes in PacketReceiver interface: added address() method to replace deprecated uri(). The reason for this change is more conceptual than practical: the term "address" is more appropriate than the term "uri" because that entity provides a way to reach a PacketReceiver, not necessarily to identify one.
    • added configure test to detect some JVM 1.3 features
    • new and updated text in documentation
    • moved some diagnostic messages to logging (rather than error) for non-fatal packet receiver errors.
    19 January 2002
    released version 1.3.0 of the Java language API and server.

    Change log:

    • major changes in the allocation and handling of I/O buffers in HierarchicalDispatcher. Many thanks to John Giacomoni <[email protected]> who helped with lots of experiments and discussions
    • added new packet sender/receiver pair using persistent TCP connections. The receiver is implemented by the KAPacketReceiver class. Again, many thanks to John Giacomoni for his contribution to the design of this component
    • changes in thread handling and reduced some synchronization sections
    • fixed minor bug in pattern notification function of HierarchicalDispatcher, thanks to Mauro Caporuscio <[email protected]>
    • fixed bug in Poset successors, thanks to Phil Gross <[email protected]>
    • removed deprecated members from AttributeConstraint
    • TCPUDPPacketSenderFactory replaced by GenericSenderFactory
    • Notification and Filter are now Serializable
    • changed UDPPacketSender and UDPPacketReceiver to recycle internal socket and buffer objects
    • added/updated documentation
    • fixed bad html tag in documentation
    14 September 2001
    released version 0.4.2 of the C++ API.

    Change log:

    • added constructor to ThinClient with specific identity
    • added installation and packaging targets to win32 Makefile
    • small modification to improve compliance to standard C++
    13 September 2001
    released version 1.2.0 of the Java language API and server.

    Change log:

    • changed PacketSenderFactory mechanism. Now, an interface, with configurable/default values (implementations) in HierarchicalDispatcher and ThinClient. This allows for completely pluggable sender/receiver implementations
    • added configure method, used for dynamic reconfiguration of remote dispatchers
    • added DirectSENPInterface to allow direct access to the SENP protocol. This class can be used, for example, to issue reconfiguration messages
    • added new monitoring capability (class Monitor)
    • cleaned and improved output mechanism for HierarchicalDispatcher, including configurable sender thread pool
    • fixed unreachable subscriber collector. Now also configurable through HierarchicalDispatcher parameters
    • added command-line parameters to StartServer for new HierarchicalDispatcher configurations
    • added clearSubscriptions method for HierarchicalDispatcher
    • fixed some synchronization problems for internal data structures in HierarchicalDispatcher
    • improved error reporting and logging messages for HierarchicalDispatcher
    • fixed bug in unsubscribe(Pattern)
    • minor clean-ups for code and documentation
    15 July 2001
    released version 0.4.1 of the C++ API.

    Change log:

    • fixed parsing of string constants "true" and "false", previously parsed as boolean values.
    • added documentation license
    27 June 2001
    released version 0.4.0 of the C++ API.

    Change log:

    the C++ API has been rewritten almost entirely from scratch. The most important new features are:

    • complete protocol-level compatibility with the most recent Java server
    • native win32 port
    • new and improved documentation
    5 February 2001
    released version 1.1.2 of the Java language API and server.

    Change log:

    • added UDP packet sender/receiver and corresponding support in PacketSenderFactory
    • added setHostName(String address) to TCPPacketReceiver and UDPPacketReceiver, which may be used to set the address of a receiver explicitly. It might be necessary to use this method in cases in which the JVM can't figure out (at least one of) its externally-visible IP addresses.
    • added -udp command-line option to StartServer to start up a server using a UDP receiver instead of a TCP receiver
    • added -host address command-line option to StartServer to set its externally-visible address
    • AttributeValue is now Serializable
    • added void shutdown() function to Siena interface
    • added documentation here and there
    • fixed some iterations in Filter, Notification, and in Covering (implementation of the covering relations) to use more efficient Map.Entry instead of iterating through keySet and performing separate key-based access.
    • fixed static main() in StartServer, now public.
    • cleaned various unused import clauses
    5 December 2000
    released version 1.1.1 of the Java language API and server. This release introduces important licensing changes

    Change log:

    • split binary distribution into API and server
    • the API package is released under the GNU Lesser General Public License. It includes all the classes composing the Siena interface, plus the ThinClient implementation of the Siena service
    • the server package is released under the GNU General Public License. It includes the HierarchicalDispatcher implementation of the Siena service
    17 November 2000
    released version 1.1.0 of the Java language API and server.

    Change log:

    • added receiver/sender framework to modularize the communication layer of Siena. This framework includes interfaces PacketReceiver and PacketSender, a packet-sender factory, and a TCP-based implementation of receiver and sender
    • changed HierarchicalDispatcher and ThinClient to use the new receiver/sender framework
    • fixed bug in HierarchicalDispatcher.setMaster() that sent a bad packet to the master server (null subscription)
    • changed test program TestNotificationBuffer.java to be compatible with jdk 1.2.2
    30 October 2000
    released version 1.0.3 of the Java language API and server.

    Change log:

    • added and fixed handling of null values
    • added class NotificationBuffer which can be used to as a "mailbox" for notifications.
    • updated examples
    • included examples in automatic documentation
    30 October 2000
    released version 1.0.2 of the Java language API and server.

    Change log:

    • fixed bug in copy constructor of AttributeValue that caused notifications and filters to share (mutable) byte arrays
    15 October 2000
    released version 1.0.1 of the Java language API and server.

    Change log:

    • added copy constructors to Filter, Notification, Pattern, AttributeConstraint, and AttributeValue
    • added duplication of notifications and patterns on notify(). This makes it safe for applications to modify notifications and patterns received from Siena
    • added duplication of filters and patterns on subscribe(). This makes it safe for applications to modify and re-use filters and patterns used in subscriptions
    6 October 2000
    released version 1.0.0 of the Java language API and server.

    Change log:

    • added ThinClient class. ThinClient implements a simple proxy to an external Siena server.
    • added event sequence recognition capability. Added class Pattern and corresponding subscribe/unsubscribe functions.
    • added method notify(Notification[]) to Notifiable interface to pass sequences of notifications.
    • added class Op for easier definition of codes for selection operators.
    • added and improved logging and error reporting
    • added various tests
    • removed documentation for internal (non-public) classes
    • added much class-specific documentation
    • added overview page for documentation
    • fixed bug that caused wrong transmission of boolean values
    • added --with-javabin option to configure.
    30 June 2000
    released version 0.4.3 of the Java language API and server.

    Change log:

    • fixed bug that caused wrong transmission of large long values.
    • fixed bug in AttributeValue.booleanValue() that caused incorrect value for boolean attributes
    • fixed some cross-references in documentation
    • added some documentation
    9 May 2000
    released version 0.4.2 of the Java language API and server.

    Change log:

    • added digits in attribute names. Now attribute names can contain letters, digits, underscores, dots, and forward slashes. See the documentation of Event for details
    • fixed bug in HierarchicalDispatcher.setMaster() that caused incorrect forwarding of subscription to new master server
    • fixed concurrent modification problem for subscriptions poset in HierarchicalDispatcher.setMaster()
    • fixed some typos in documentation
    • added some documentation
    28 Apr 2000
    released version 0.4.0 of the Java language API and server. From now on, a change log summary will be available (on this page) for every new release.

    Change log:

    • added and improved user documentation, mainly for HierarchicalDispatcher
    • added asynchronous notification mechanism for HierarchicalDispatcher
    • added suspendMaster() and resumeMaster() for HierarchicalDispatcher
    • added automatic garbage collection mechanism for stale subscriptions (see removeUnreachableSubscribers() in HierarchicalDispatcher)
    • added debug option to HierarchicalDispatcher (setDebug() and getDebug()) and a corresponding option to StartServer (-debug)
    • fixed bug in subscriptions poset management in HierarchicalDispatcher
    • fixed race conditions in HierarchicalDispatcher that caused some initial notifications and subscription not to be forwarded to the master server
    • adapted code examples on this page to the new interface
    17 Apr 2000
    released version 0.3.3 of the Java language API and server. This new version features major modifications and improvements, including changes in the Siena protocol. This new version is not compatible with any one of the previous versions.
    1 Mar 2000
    released version 0.3 of the C++ API and version 0.3 of the C++ Server. From now on, the C++ API and the C++ server will be distributed and maintained separately.
    28 Feb 2000
    released version 0.2.4 of the Java language API and server.

this page is maintained by Antonio Carzaniga and was updated on December 13, 2015