mirror of
https://github.com/AdaCore/PolyORB.git
synced 2026-02-12 13:01:15 -08:00
This clean up aims at simplifying the processing, making it more robuts, ensuring deadlock freedom and improving performance through the reduction of task switches. Reorganization of request processing ------------------------------------ A Request_Job is not inconditionally queued anymore in the main ORB controller job queue when the ORB receives an Execute_Request message. For the client case, the processing is done directly within the calling task. There is no point in transferring control to another task in that case, since the calling task will in any case remain in the ORB until completion of the request. For the server case, processing is immediately dispatched to the ORB tasking policy, which can either queue the request (Thread_Pool case) or hand it to the task responsible for processing it (Thread_Per_Request and Thread_Per_Session cases). A Request_Job is therefore queued only for the case where it will subsequently be picked up by an ORB task that is meant to execute it, and therefore Run_Request can be executed immediately (without having to dispatch through the ORB tasking policy) at the point where the Request_Job is actually run. The profile of Run_Request is updated to allow executing this subprogram in contexts where no Request_Job has been created. Handling of dynamic task termination ------------------------------------ Dynamic tasks started in the full tasking profile need to be free'd after they terminate. A new dedicated Reaper task is introduced that takes care of that. Cleanup ------- The May_Poll task flag was always True and is removed. The Runnable_Controller type was useless and is removed. Duplicate_Request_Job is now useless and is removed. TNs --- This addresses the irregularity observed on H813-027 (need to borrow transient tasks for upcalls when using Thread_Per_Request or Thread_Per_Session) and some of the deadlock scenarios identified on H813-026 (case of Thread_Pool with max_threads = 1). The original motivation for this work is G510-007 (reorganization to avoid doing upcalls in transient tasks) and H828-032 (assertion failed when moving a permanent task to idle state). Subversion-branch: /trunk/polyorb Subversion-revision: 128602
README for the PolyORB examples directory ----------------------------------------- $Id$ To build the examples, follow the instructions in the PolyORB User's Guide. * Directories : This directory contains a few demonstration of PolyORB's capabilities. It is organized around PolyORB application personnalities aws/ : AWS demos, bbs/ : Interoperability demo between CORBA and DSA middleware, corba/ : CORBA demos, dsa/ : Ada 95 Distributed System Annex demos, moma/ : MOMA demo, polyorb/ : simple demo using PolyORB's neutral core layer. * Interoperability demo : XXX To be written. * SOAP demo : To specificaly test SOAP protocol personality, you can use the "Generic SOAP client" at http://soapclient.com/soapmsg.html (c) SQLData System Inc. And provide the following inputs : Server address : the full path to your object, e.g. 137.194.162.29:8080/1;sys;pf=1032965896 SOAPAction : the method to execute, e.g. echoString SOAPMessage : the complete SOAP message, see examples/corba/echo/soap_message We provide SOAP Messages for some tests.