[ASPL Fact devel] Af-Arch 1.0-rc5 is ready!

Francis Brosnan Blazquez francis at aspl.es
Fri Nov 4 19:39:08 CET 2005

     #  Af-Arch Framework 1.0-rc5 release note #

Madrid, Spain 4th November:

    Advacend Software Production Line is proud to announce the
    availability of Af-Arch framework 1.0-rc5.

What is Af-Arch ?

    Af-Arch is a full featured Open Source N-Tier framework to develop
    distribuited applications. Its license schema allow to build
    Open Source and commercial (closed source) applications.

    In conjuntion with tools such as af-gen, Af-Arch is a powerful
    framework to build, really fast, high quality distribuited
    applications running on Unix platforms and Microsoft Windows.
    Check http://fact.aspl.es/doc/af_arch_what_is.html for more

What features has Af-Arch ?
    Af-Arch is a framework to develop distribuied applications which

    * Remote services invocation
    * Support both invocation models: Synchronous and Asynchronous
    * Services and Server component transparent location
    * Native support for users and groups
    * Native users and groups permissions
    * Native users session
    * Bindings support to other languages
    * Cross-platform development (currently Microsoft Windows and Unix
    * Af-Arch also comes with an IDL compiler (with some useful
    * Automatic services definition
    * Automatic SQL database definition
    * Automatic autoconf support
    * Af-Arch comes with a command-line administration tool: aspl-clm
    * Platform license allows Open Source and commercial (closed
      source) developments

    Check http://fact.aspl.es/doc/af_arch_framework_features.html
    for a detailed description about features supported.

This release in short

    Since previous release it has been added two new supported return
    types to Af-Arch: AfDalStringData and AfDalNodeData. They allow
    Af-Arch developers to get just a DataNode reference or an string
    value as a result from a service invocation. 

    Two new reserved services has been added to Af-Arch: reference and
    previous. They allow to get a DataNode from an Id value and list
    previous elements starting from an initial cursor. 

    New af-gen syntax called "bind as", now allows to have multiple
    1..1 relations between the same modules.

    Sessions refresh and passwords notification mechanism know works
    for C Af-Arch applications and C# ones.

    Now libafdal layer support full fault tolerance against af-kernel
    failures and af-arch server nodes. If any af-arch server,
    including the af-kernel, fail and it is restarted again, Af-Arch
    applications keep on working. LibAfDal layer internally refresh
    host location table, update sessions af-keys and permission
    session once a failure is detected.

    Now aspl-clm tool includes support to execute every command
    supported from command line option. This allows scripting aspl-clm

    Many bug fixes and memory leaks have been squashed. 

    This release is considered to be stable and to be previous step to
    Af-Arch 1.0. Currently, ASPL is working to release a new Af-Arch
    application which will use Af-Arch 1.0-rc5.

    Enjoy Af-Arch!!

Changes since 1.0-rc5
     * fixing a memory leak on the C client STUB generated. On not
       connected servers conditions a queue was not released properly
       while using synchronous invocation.

     * added support for the new return type AfDalNodeData. Now af-gen
       can generate customer services which returns AfDalNodeData as
       result for its invocation.  The support has been also extended
       to C# language.

     * added a new reserved service: "reference" which allows to get a
       reference to the object identified by an object unique

     * added a new reserved service called "previous" which allows to
       get a list of the previous elements starting from an especific
       Id counting back until the max_row_number parameter.

     * making af-gen to generate a support method called
       GetAttributePosition which receives the attribute name and
       return its position inside the class.

     * adding new internal function af_gen_support_multiple_write
       which allows to write several lines at the same time with only
       one call.

     * making af-gen to generate an idempotent AddElement service.

     * fixing bad parameter name inside the C# client stub for the
       ElementList service.
     * fixing bug on search interface generation for C# interface
       while generating modules with a decimal definition as last
       attribute next to an attribute different from decimal.

     * fixing a bug on the search interface generation (c layer)
       exposed only when using decimal values for searchable modules
       which have a decimal attribute at the end.

     * making af-gen to build C# stub method for Commit and Remove as
       a override methods (overriding those from DataNode class).

     * making af-gen to support server version. Now a server definition
       can have a version which is transported into the generated source

     * making af-gen to build autoconf files which are compatible with
       automake1.7 and automake1.9.

     * adding user info to indicate where the source code was

     * fixing bug on C stub layer for reference and num_element
       service inside the search and replace interface. This has
       exposed a bug on synchronous services building: not all modules
       were using the same method to build synchoronous services. Now,
       it is unified.

     * added new function to af_gen_c_source
       af_gen_c_source_write_parameter to unify writting parameter to
       output files.

     * fixing af_gen_abstract_syntax_get_param_names/types to detect
       and react against search service.

     * refactoring source code inside the search module.

     * fixing bug on SQL generation, while declaring ALTER statement
       for relation where "bind as" was used.

     * fixing a bug on af_gen_abstract_syntax_get_relation_bind_as and
       af_gen_abstract_syntax_set_type_modifier_not_null (accessing to
       a wrong value).

     * making af-gen to detect when a module attribute has the same
       name as the module holding it, showing an error and then giving

     * fixing an non existent reference to enum types defined at C
       layer from the main header.

     * adding support to defined several relation between the same
       modules. In order to support this feature it has been added a
       new construct: "bind as" which allows to configure the new to
       be used on multiple relations. This new sentence tweaks the
       services generated and attributes defined implicitly.

     * making af-gen to detect and show an error if several relation
       are defined between the same modules without using "bind as"

     * adding support to af-gen IDL language to also document modules
       using short and description document blocks. Refactoring source
       code inside the af_gen_doc_services module.

     * making af-gen to not generate source test modules by
       default. Added a new option to reenable it: --enable-test


     * fixing bug on exarg_is_definedv: valid C string on Unix
       platforms makes windows ill.

     * adding two new function: exarg_is_definedv: which allows to
       check several arguments at the same
       time. exarg_get_string_alloc: which works like exarg_get_string
       but returning a newly allocated string.

     * making exarg_end function (exarg termination) to be reentrant.

     * making exarg to call exarg_end on exit failues. 


     * adding a new function coyote_connection_new2 which works the
       same as coyote_connection_new but receiving the port as int

     * making coyote library to init dtd used only once. Now, coyote
       library initialize coyote dtds at coyote_init and will release
       it using coyoet_exit.

     * making coyote_exit function to release resources allocated by
       coyote library.

     * making coyoet_exit function to be reentrant (several threads
       can actually call coyote_exit function).

     * making calls to xmlValidateDtd to use a stack activated
       xmlValidCtxt rather than heap allocated xmlValidCtxtPtr.

     * fixing memory leak __coyote_xml_item_destroy. node->attrib
       wasn't been deallocated.

     * making coyote library to call vortex_exit from coyote_exit.

     * fixing memory leaks on coyote_xml_parse_message and 
       coyote_xml_validate_message caused by improper call to

     * fixing memory leak on coyote_xml_parse_message caused by not
       freeing memory allocated by xmlDocPtr.

     * fixing memory leak on coyote_dataset_destroy caused by not
       freeing the CoyoteDataSet pointer itself.


     * fixing previous memory leak (a queue not properly released)
       inside the afdal_sync module.

     * changing default synchronous timeout to 60 seconds instead of
       10 seconds.

     * making afdal_password notification to also allow notifications
       event source module. Removed old documentation about password
       notification function.

     * added more documentation to afdal_sync module.

     * making afdal_password notification to also allow notifications
       event source module. Removed old documentation about password
       notification function.

     * added more documentation to afdal_sync module.

     * Added support for a new return type supported by the Af-Arch
       platform: AfDalNodeData.
       This new return type will allow to implement services which
       only return a datanode from the service executing. This new
       return type is especially used by the reference service. This
       new reserved service will be the fundation for a new set of
       technologies supported natively by the Af-Arch
       framework. Great!

     * update af-arch documentation to fix some typo errors.

     * adding new function afdal_datanode_is_commited to get current
       commited status for a given AfDalDataNode object.

     * adding missing function on the afdal_decimal module:

     * making afdal_decimal_normalize to return a default normalized
       value bound to 0.0 if a null reference is received.

     * added a new function to afdal_decimal module:
       afdal_decimal_get_double Which allows to get current decimal
       value in a double form.

     * added a new function to afdal_decimal module:
       afdal_decimal_get_precision Which allows to get current decimal

     * fixing a bug on update host location table for client side. Was
       unrefering the host value on host location changes.

     * making afdal layer to support fully fault tolerance for host
       failures, including the af-kernel server. Now, if any server
       fails, including the central server, it is no longer needed to
       restart client applications. Once af-arch servers are started,
       client applicatiosn automatically starts to work. Great!!!

     * code clean ups: removed duplicated structures such as

     * updating module internal documentation.

     * fixing a double free memory bug exposed by newest machines.

     * adding a new function afdal_session_login2 to allow performing
       Af-Arch login process using as port an int value.

     * updating all layer to reflect the new internal change due to
       starting to represent tcp port as int values rather than string

     * making afdal_list_destroy to just return with no complain when
       a null reference is received.

     * fixing afdal_session_get_port_location function which was
       returning the host rather than de port.

     * adding source code documentation to __afdal_sync_implement (and
       some debug info).

     * fixing afdal_session_active_servers.

     * added two new function: afdal_session_get_host_location and
       afdal_session_get_port_location which allows to get current
       host and port location for the given host name.

     * making afdal_exit to be reentrant.

     * improving error checks on

     * making afdal_exit to call coyote_exit rather than vortex_exit

     * fixing memory leak on
       afdal_request_close_and_return_initial_data caused by not
       calling coyote_dataset_free on AfDalSimple replies.

     * added missing value AFGS_SESSION_EXPIRATION to afgs_config.h 

     * making afgs main to initialize afdal module before initialize
       the afgs library. This fixes a not properly signal handling for
       server components.

     * adding macro definition to allow a compiler safe mode to access
       common configuration values for Af-Arch servers.

     * added new function afgs_config_check_config_value to check for
       a particular value for a given key on the config file.

     * added support for a new common config value: database access
       semantic which allows to configure how database connections are
       handled. Now it supports permanent connections, refresh
       connections on inactivity and close connection once used.

     * adding new API to afgs_log module: afgs_log_with_domain and
       afgs_log_with_domainv to allow loging at the same time into the
       server log file and to the console.

     * adding a new config file: automatic register which allows
       af-arch servers to update itself without using
       --update-services modifier. Added documentation to af-arch
       servers config values reference.

     * adding new API to afgs_main module: afgs_main_get_server_name,
       afgs_main_get_server_description, afgs_main_get_server_version,
       afgs_main_get_running_host and
       afgs_main_get_running_port. Added documentation for the new

     * making afgs_signal_handler to not handle SIGINT signal.

     * adding automatic register as new default accepted key for
       afgs_config module.

     * adding more user info to afgs_reg module. 

     * making afgs_command module to abort running instance if not
       database connection was created.

     * adding AF0015 error code documentation.

     * making afgs server exit to be homogeneous while exiting due to
       a signal or a normal exit.

     * afgs exit method is reentrant and avoids race conditions while
       relasing resources. Exit method now relase pending resources to
       be deallocated before exiting.

     * fixing a memory leaks on afgs_main_run_server (due to not
       releasing memory before exiting).


     * adding a new class inside the afdal-sharp assembly: Sync, which
       wraps the afdal_sync public services.

     * implemented and tested Af-Arch sessions mechanism for the C#

     * added support for the new return type AfDalNodeData represented
       by the class NodeData.

     * added new invoke class AfDalInvokeRemoveElement.cs

     * updated documentation for the AfDalInvokeAddElement class.

     * added new ToDouble method, overloading previous ones, inside
       the AfDecimal class.  This new method just ignore if the afdal
       decimal to double conversion was ok.
     * adding two new constructors to the AfDecimal class to create
       new instances from double values.

     * overloading Modify method for the AfDecimal class so it can
       also receive a double value.

     * refactored source code in order to use the same code from the
       different method added and previously existing. Added
       documentation for new methods.

     * flaging DataNode class as abstract.

     * adding two virual method Commit and Remove.

     * adding a contructor to the NulData class to create not valid
       NulData objects.

     * moving delegates for login and logout from Session class to
       AfDal class. (No impact on already written code.)


     * removing af_kernel.c main file, now it is generated from a
       af_kernel.c.in file.

     * adding new af_kernel.c.in file.

     * removing prototype from addon_host_location_facilities.idl. Now
       __afdal_session_try_to_connect is declared as a accesible
       function at the afdal_session header. Fixing calls to that
       function using a integer value as port.  

     * adding server version to af-kernel.idl file.  

     * updating configure files to use the new af-arch server version

     * updating files due to changes on idl definitions.  

     * updating af-kernel.cfg.example to include a reference to the
       new config value "automatic register"
     * fixing memory leak on server_register service: string allocated
       value for af_key, session_id string allocated,
       server_id_dataset dataset weren't realeased.

     * fixing memory leak on af_kernel_server_check_version, query
       dataset wasn't released.

     * fixing memory leak on session_login service: string allocated
       for af_key, user_id_dataset dataset, session_id string weren't

     * fixing memory leak on af_kernel_session_new: string and time
       values weren't released.

     * fixing a memory race condition on af_kernel_statup_check:
       releasing a dataset used in the next sentences.

     * fixing a double allocation leak on af_kernel_statup_check.

     * fixing a memory leak on af_kernel_statup_check caused by
       calling afgs_config_get rather than afgs_config_get_ref

     * fixing a memory leak on af_kernel_registry: hostname and port
       strings allocated weren't released.

     * adding more info on login error. 

     * making aspl-clm to refresh the prompt rather than botter the
       user to type help.

     * adding a new command: "connection check" which allows to simple
       check connectivity with a remote node running on a tcp

     * fixing a bug on support_get_nth_arg_string causing aspl-clm to
       crash if no func to list element is provided.

     * created a new command section: "Testing the environment"
       holding the following commands: which servers, nop server,
       connection check.

     * refactoring source from connection module.

     * adding more command line options to aspl-clm allowing to
       executing aspl-clm command from shell script (perl, bash,
       ..). Now, all login configuration can be especified from the
       command line, even the command to execute.

     * adding a new command: "nop server" which allows to make pings
       to remote af-arch servers.

     * fixing memory leak on connection open and connection close
       commands.  Added new function connection_clean_previous_values
       to keep memory clean for connection module.

     * fixing memory leak on connection open command caused by not
       calling afdal_nul_free over data received on login request.

     * added new support function support_get_int_value to get integer
       values from command line input.

     * fixing memory leak on user_module caused by not unrefering queue
       used and values allocated to create new users (user name, 
       password and description).

     * fixing memory leak on list user command caused by not calling
       to afdal_data_free.

     * Adding new function aspl_clm_getpass_allocated to get a newly
       allocated string password.

     * making quit command to call main_exit which free last line
       read, prompt allocated, exit from afdal and exarg libraries,
       clears readline history and exit.

     * fixing memory leaks on permission command module caused by not
       freeing string values.

     * fixing memory leak on group module caused by not calling

     * fixing memory leak on group list command caused by not calling
       to afdal_data_free.

     * updated Af-Arch documentation, fixed typo erros and added
       documentation for the new return type.

     * added an internal document to explain how to add new return
       types to the whole af-arch environment.

     * adding support to get-version.pl for --clean-version switch to
       get only the component version without subversion indicators.

     * updating af-arch-installer to explain better which means the
       af-kernel password required, fixing some typo errors, adding
       support to define where is running the postgresql server rather
       than assuming localhost, fixing some confusing question not
       synchronized with the answers and making af-arch root user
       creating to avoid empty user names.

     * removing --merge-option from Makefile.am to avoid overwriting
       source code while developing with af-gen tool.
     * updating af-arch init.d perl script to support a
       force-shutdown. Because this script needs a user to check
       server status it could happen the script doesn't know what is

     * updating Af-Arch Naming convention document, explaining in more
       detail naming convention for service_part and module_part.

     * adding a new /etc/init.d/af-arch init script which makes a
       smart Af-Arch services starting. It uses aspl-clm command line
       interface to check if servers are running using nop
       commands. It also waits for Af-Kernel to be sucessfully started
       before starting user defined Af-Arch servers.  This startup
       script is writting in perl allowing to implement more complex

About Advanced Software Production Line 
    Af-Arch is being developed and maintained by Advanced Software
    Procution Line. 

    ASPL provides support and customer services to integrate GNU/Linux
    and Open Source technologies into organization procedures. 

    Related to Af-Arch, ASPL provides support to develop distribuited
    system to solve application data integration solutions.


    Af-Arch main project: 

    Af-Arch documentation center

    Af-Arch download site

    Advanced Software Production Line
Francis Brosnan Blazquez <francis at aspl.es>
Advanced Software Production Line, S.L.

More information about the ASPL-Fact-devel mailing list