Changes between Initial Version and Version 1 of new-rpc-model

03/07/11 09:16:24 (8 years ago)
ibaldin (IP:



  • new-rpc-model

    v1 v1  
     1= New asynchronous inter-actor communications model = 
     3== Overview == 
     6New RPC model. All communication between orca actors now happens without holding the kernel lock. 
     7The RPCManager manager manages both inbound and outbound RPCs. Outbound RPCs are posted to the orca threadpool 
     8and are sent asynchronously. Every actor has a queue for inbound RPCs. When an RPC arrives it is validated 
     9(access control, missing fields, etc.) and posted onto the actor's RPC queue. Actors drain their RPC queue 
     10in their tickHandler. Failed RPCs are posted back to the actors that generated them. Orca makes an attempt to determine 
     11the cause of the RPC failure (see RPCError). If the failure is caused by the network, the RPC is retried, potentially 
     12until the reservation fails/is closed/or expires. Failures not due to the network are considered fatal and fail the 
     13associated reservation. 
     15All communication between actors works on the following model: 
     16 *  A calls B 
     17 *  B validates and queues the RPC 
     18 *  B sends A an empty message that confirms the reciept of the request 
     19 *  Some time later, B sends a message to A to complete the RPC request 
     20 *  If an RPC is not based on a reservation, the RPC has a sequence number that is echoed 
     21  back in the response so that A can tie the response to the request that caused it 
     24Reworked significantly the way proxies operate. 
     26Changed the way we handle updateTicket and redeem: 
     27 * updateTicket: no longer makes a call to the site to register the actor's certificate. 
     28Instead, the actor validates the incoming ticket, extracts the Certificate of the site, and adds it 
     29to its keystore. 
     30 *  redeem: no longer assumes that the actor's cert is in the site's keystore. 
     31Instead, the site extracts the ticket, validates it, extracts the Certificate of the holder, and 
     32adds it to its keystore. After doing this, the site checks the signature on the SOAP message. 
     33 * actor.query() had to change is it is no longer synchronous. Provided a synchronous convenience method, which 
     34should never be used on the actor main thread.