org.omg.FT
Class LoggingRecoveryController_impl

java.lang.Object
  |
  +--org.omg.PortableServer.Servant
        |
        +--org.omg.FT.LoggingRecoveryControllerPOA
              |
              +--org.omg.FT.LoggingRecoveryController_impl
All Implemented Interfaces:
org.omg.CORBA.portable.InvokeHandler, LoggingRecoveryControllerOperations

public class LoggingRecoveryController_impl
extends LoggingRecoveryControllerPOA

Class instantiated on every host where replicas of server groups can be created; it has the role of logging and checkpointing for the application server replicas; to checkpoint the state of the object, it instantiates on demand a thread for each checkpointed object in which it periodically calls the state reading method on the CORBA object Also, it is used when logging of method calls is done in passive replication, and also reply logging when this is needed


Inner Class Summary
private  class LoggingRecoveryController_impl.CheckpointThObjStr
           
private  class LoggingRecoveryController_impl.CheckpointThread
          Class instantiated whenever a new replica is created and needs o be checkpointed (in passive replication) periodically, or not.
private  class LoggingRecoveryController_impl.MyLong
           
private  class LoggingRecoveryController_impl.NotifySObj
           
private  class LoggingRecoveryController_impl.UpdateThObjStr
           
private  class LoggingRecoveryController_impl.UpdateThread
          Class instantiated whenever a new replica is created and needs o be checkpointed (in passive replication) periodically, or not.
 
Field Summary
(package private)  java.util.Vector checkpoint_threads
           
(package private)  java.util.Hashtable logTable
           
(package private)  LoggingRecoveryController[] neighbours
           
(package private)  org.omg.CORBA.ORB orb
           
(package private)  java.util.Vector update_threads
           
(package private)  java.lang.Object wait_fall_asleep
           
 
Fields inherited from class org.omg.FT.LoggingRecoveryControllerPOA
_ids_list, _ops_Hash
 
Fields inherited from class org.omg.PortableServer.Servant
_delegate, _hasGetInterface
 
Constructor Summary
LoggingRecoveryController_impl(org.omg.CORBA.ORB o)
           
 
Method Summary
private  void broadcast_method_call_as(long objI, java.lang.String oper, byte[] buffer, boolean big_e, org.omg.GIOP.Version vers, java.lang.String client_id, int retention_id, long expiration_time, char meth_type, long mess_id)
           
private  void broadcast_method_call_par(long objI, java.lang.String oper, org.omg.Dynamic.Parameter[] args, java.lang.String client_id, int retention_id, long expiration_time, char method_type, long mess_id)
           
private  void broadcast_reply(long objI, java.lang.String client_id, int retention_id, org.omg.CORBA.Any result, org.omg.CORBA.Any[] result_arguments, char meth_type)
           
 ResultResultArgs call_reply(long target, java.lang.String client_id, int retention_id)
          Method called to obtain the reply record (i present int he log) to a call with given identifier
 void do_checkpointing(Checkpointable checkpointed_obj, long obj_id, long checkpoint_interval, Checkpointable[] transfer_to, boolean transfer, boolean periodic)
          Method called (mainly by the Replication Manager) when a new replica of a group is installed and needs to be checkpointed
 void do_updating(Updateable updated_obj, long obj_id, long update_interval, Updateable[] transfer_to, boolean transfer, boolean periodic)
          Method called (mainly by the Replication Manager) when a new replica of a group is installed and needs to be checkpointed by reading state changes (updates) from time to time
private  boolean equals(byte[] a, byte[] b)
           
private  LoggingRecoveryController_impl.CheckpointThread get_ch_thread(Checkpointable checkpointed_obj)
           
private  LogRecord get_its_reply(java.util.Vector logVector, java.lang.String oper, java.lang.String client_id, int ret_id, int s_pos)
          Method called to obtain the reply record for a call (normal method or get_state/update); if the call is of type checkpoint then the reply is of type state record
private  int get_last_outgoing_ret_id_v(long id, java.util.Vector v, boolean clear)
           
 int get_last_outgoing_ret_id(long id, boolean clear)
          Method called to obtain the retention identifier of the last outgoing request sent from the replica residing on the machine of this LRC
private  LogRecord[] get_last_records_ch(long id, java.util.Vector logVectorVector, boolean clear)
           
private  LogRecord[] get_last_records_upd(long id, java.util.Vector logVectorVector, boolean clear)
           
private  int get_last_ret_id(long objI)
          Method called to obtain the retention identifier of the last outgoing CORBA call from the replicated group This identifier is needed in the new recovering member, in order for it to continue sending outgoing requests (if it has to send those) with retention identifiers starting not from 0, but from the number given by the last ret id in the failed replica
private  LoggingRecoveryController_impl.UpdateThread get_up_thread(Updateable updated_obj)
           
private  java.util.Vector logVectorVector(long id)
           
 void react_set_st_upd_reply(long object)
          Method used in a backup when warm passive replication is used, as soon as the set_state method is called on that backup when the state is read from the primary; the "reaction" to that call of set_state is that the method calls logged since the last checkpoint are removed - this is what happens in the method react_set_....
 ResultResultArgs record_method_call_as(long target, java.lang.String operation, byte[] buff, boolean big_e, org.omg.GIOP.Version vers, java.lang.String client_id, int retention_id, long expiration_time, char method_type, boolean broadcast)
          Method used to record method call information
 ResultResultArgs record_method_call_par(long target, java.lang.String operation, org.omg.Dynamic.Parameter[] arguments, java.lang.String client_id, int retention_id, long expiration_time, char method_type, long timestamp, boolean broadcast)
          Method used to record method call information (giving explicit list of parameters)
 void record_method_no_wait_as(long objI, java.lang.String oper, byte[] buffer, boolean big_e, org.omg.GIOP.Version vers, java.lang.String client_id, int retention_id, long expiration_time, char method_type, long mess_id)
          Method called in case a call information record has to be logged, but without waiting for other methods to finish execution first - this is the case when a method call record is broadcast to warm backups by the primary
 void record_method_no_wait_par(long objI, java.lang.String oper, org.omg.Dynamic.Parameter[] args, java.lang.String client_id, int retention_id, long expiration_time, char method_type, long mess_id)
          Method called in case a call information record has to be logged, but without waiting for other methods to finish execution first - this is the case when a method call record is broadcast to warm backups by the primary
 void record_part_get_st_upd_reply(long object, int current_retention_id, java.lang.String oper)
          Method used to record a part of the reply to the get_state or get_update request that is sent by the chekpoint/update thread to the application replica - this operation is needed because the information recorded here is no longer available when the final state information is recorded
 void record_replies(LogRecord[] replies)
          Method used to write in the log a set of call replies
 void record_reply_exc(long source, java.lang.String client_id, int retention_id, char method_type)
          This method is used to signal when in the server interceptor and an exception is sent to the client, that the method was executed; thus, in case it has the type "update" the waiting method calls have to be notified
 void record_reply_no_notify(long objI, java.lang.String client_id, int retention_id, org.omg.CORBA.Any result, org.omg.CORBA.Any[] result_arguments, char meth_type)
          Method called in case a reply information record has to be logged, but without notifying other waiting methods - this is the case when a method reply record is broadcast to warm backups by the primary
 void record_reply_stateless(long objI, java.lang.String client_id, int retention_id, long expiration_time, org.omg.CORBA.Any reply, org.omg.CORBA.Any[] reply_arguments)
          This method is used when stateless or active replication is used, and the reply wants to be recorded; in these two cases there is no need for the method call for which information is recorded to wait for other methods executing before it to finish
 void record_reply(long source, java.lang.String client_id, int retention_id, org.omg.CORBA.Any reply, org.omg.CORBA.Any[] reply_arguments, char method_type, boolean broadcast)
          Method used to log the reply of a call to a method on the server replica
 void record_request_repl(java.lang.String cl_id, org.omg.CORBA.Object to, java.lang.String operation, org.omg.CORBA.Any[] arguments, int retention_id, org.omg.CORBA.Any reply)
          Method used to record a reply to an outgoing request from the replica group (or even from a normal client that calls a server and has an interceptor that calls this method whnever a reply is received back)
protected  void record_rest_get_st_upd_reply(java.lang.String oper, long object, byte[] state, long timestamp)
          Method used to record the rest (state/update) of the reply to the get_state or get_update request that is sent by the chekpoint/update thread to the application replica
 void recover_new_replica_ch(long o_id, LoggingRecoveryController new_lrc, Checkpointable to_recover, int repl_s)
          Method called on the host where the failed primary resides, in order to install a backup as a primary, after replaying the last logged calls; this method is called in case the primary was checkpointed by state readings
 void recover_new_replica_st_ch(long o_id, LoggingRecoveryController new_lrc, Checkpointable to_recover, Checkpointable failed_obj)
          Method called on the host where the failed primary resides, in order to install a backup as a primary, in case stateless replication is used, so that no replay of methods or state instalation is needed
 void recover_new_replica_upd(long o_id, LoggingRecoveryController new_lrc, Updateable to_recover, int repl_s)
          Method called on the host where the failed primary resides, in order to install a backup as a primary, after replaying the last logged calls; this method is called in case the primary was checkpointed by update readings
 void remove_log(long objId)
          Method called to remove the log corresponding to a certain group
private  void remove_wp_log(long id)
           
 void replay_last_requests(org.omg.CORBA.Object target, LogRecord[] last_rec, long objI, int current_retention_id, int repl_s)
          Method called on the Logging Recovery Controller running on the host where the backup that becomes primary resides; the result will be that the last method calls logged since the last checkpoint are replayed on the backup
 ResultResultArgs request_reply(java.lang.String cl_id, int retention_id, org.omg.CORBA.Object to)
          Method called to return a reply (if existent) to an outgoing request from this member of the replica group
private  java.util.Vector set_last_records(long id, LogRecord[] recs)
           
 void set_neighbours(LoggingRecoveryController[] neigh)
          Method called to set the other LRCs to which this LRC has to transfer method call info - in warm passive replication
 void stop_checkpointing(Checkpointable checkpointed_obj)
          Method called (usually by the Replication Manager when a member of the group failed) to stop the checkpointing of the replica
 void stop_updating(Updateable updated_obj)
          Method called (usually by the Replication Manager when a member of the group failed) to stop the checkpointing(state change reading) of the replica
private  void trigger_one_thread(long obj_id)
           
protected  void wait_update_method(LoggingRecoveryController_impl.NotifySObj event)
           
 
Methods inherited from class org.omg.FT.LoggingRecoveryControllerPOA
_all_interfaces, _invoke, _this, _this,
 
Methods inherited from class org.omg.PortableServer.Servant
_default_POA, _get_delegate, _get_interface_def, _get_interface, _is_a, _non_existent, _object_id, _orb, _orb, _poa, _set_delegate, _this_object, _this_object
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

wait_fall_asleep

java.lang.Object wait_fall_asleep

logTable

java.util.Hashtable logTable

neighbours

LoggingRecoveryController[] neighbours

checkpoint_threads

java.util.Vector checkpoint_threads

update_threads

java.util.Vector update_threads

orb

org.omg.CORBA.ORB orb
Constructor Detail

LoggingRecoveryController_impl

public LoggingRecoveryController_impl(org.omg.CORBA.ORB o)
Method Detail

get_last_ret_id

private int get_last_ret_id(long objI)
Method called to obtain the retention identifier of the last outgoing CORBA call from the replicated group This identifier is needed in the new recovering member, in order for it to continue sending outgoing requests (if it has to send those) with retention identifiers starting not from 0, but from the number given by the last ret id in the failed replica

equals

private boolean equals(byte[] a,
                       byte[] b)

logVectorVector

private java.util.Vector logVectorVector(long id)

get_its_reply

private LogRecord get_its_reply(java.util.Vector logVector,
                                java.lang.String oper,
                                java.lang.String client_id,
                                int ret_id,
                                int s_pos)
Method called to obtain the reply record for a call (normal method or get_state/update); if the call is of type checkpoint then the reply is of type state record

record_method_call_as

public ResultResultArgs record_method_call_as(long target,
                                              java.lang.String operation,
                                              byte[] buff,
                                              boolean big_e,
                                              org.omg.GIOP.Version vers,
                                              java.lang.String client_id,
                                              int retention_id,
                                              long expiration_time,
                                              char method_type,
                                              boolean broadcast)
Method used to record method call information
Parameters:
target - the identifier of the group to whose member (primary) the call was addressed operation the name of the called method buff the byte array of raw data containing the parameters of the call (this buffer will be used later, at replay, if needed, to demarshal parameters) big_e a boolean value indicating whether the ordering of octets is big endian vers the version of the GIOP encoding of information client_id the client identifier of the sender of the request retention_id the retention identifier of the request expiration_time the expiration time of the sent request method_type the type of the called method (update or read-only) broadcast if replication style is warm passive this parameter has the value true
Returns:
a result record that is not null or empty in case the request was already executed and the result was stored

record_method_call_par

public ResultResultArgs record_method_call_par(long target,
                                               java.lang.String operation,
                                               org.omg.Dynamic.Parameter[] arguments,
                                               java.lang.String client_id,
                                               int retention_id,
                                               long expiration_time,
                                               char method_type,
                                               long timestamp,
                                               boolean broadcast)
Method used to record method call information (giving explicit list of parameters)
Parameters:
target - the identifier of the group to whose member (primary) the call was addressed operation the name of the called method arguments the list of call parameters (value of parameters and their mode - IN, OT, INOUT) client_id the client identifier of the sender of the request retention_id the retention identifier of the request expiration_time the expiration time of the sent request method_type the type of the called method (update or read-only) timestamp the moment when the call information is recorded broadcast if replication style is warm passive this parameter has the value true
Returns:
a result record that is not null or empty in case the request was already executed and the result was stored

call_reply

public ResultResultArgs call_reply(long target,
                                   java.lang.String client_id,
                                   int retention_id)
Method called to obtain the reply record (i present int he log) to a call with given identifier
Parameters:
target - the identifier of the group to whose member the call identified by the client_id, and ret_id was sent client_id the client identifier of the sender of the method call for which the reply is searched for retention_id the retention identifier of the request for whose reply it is searched for
Returns:
a proper reply record for the specified call, if this reply exists in the log

request_reply

public ResultResultArgs request_reply(java.lang.String cl_id,
                                      int retention_id,
                                      org.omg.CORBA.Object to)
Method called to return a reply (if existent) to an outgoing request from this member of the replica group
Parameters:
cl_id - the client identifier of the sender replica (of the group) retention_id the retention identifier of the request sent by the replica to the third-tier server to the CORBA object designating the destination third-tier server to which the request is sent
Returns:
a proper reply record stored in a log, if the request was once sent out, executed, and a reply was stored in the log

record_replies

public void record_replies(LogRecord[] replies)
Method used to write in the log a set of call replies
Parameters:
replies - the set of call replies to be written in the log

record_reply

public void record_reply(long source,
                         java.lang.String client_id,
                         int retention_id,
                         org.omg.CORBA.Any reply,
                         org.omg.CORBA.Any[] reply_arguments,
                         char method_type,
                         boolean broadcast)
Method used to log the reply of a call to a method on the server replica
Parameters:
source - the identifier of the group whose member is the replica on which the call was previously made client_id the client identifier of the caller of the method for which the reply is recorded now retention_id the retention identifier of the call for which the reply is recorded now reply the content of the reply as return value of the called method reply_arguments the content of the reply as out/inout arguments that are written by the called method method_type the type of the method (update or read-only) - used to know whether after recordong of the reply, the waiting methods haveto be noitified or not broadcast it is true in case of warm passive replication; in this case the reply has to be broadcast to the rest of replicas and logged there

record_reply_stateless

public void record_reply_stateless(long objI,
                                   java.lang.String client_id,
                                   int retention_id,
                                   long expiration_time,
                                   org.omg.CORBA.Any reply,
                                   org.omg.CORBA.Any[] reply_arguments)
This method is used when stateless or active replication is used, and the reply wants to be recorded; in these two cases there is no need for the method call for which information is recorded to wait for other methods executing before it to finish
Parameters:
objI - the identifier of the group on whose member the method for which the reply is recorded was called client_id the client identifier of the request corresponding to the method call retention_id the retention identifier of the request correspondng to the method call expiration_time the expiration time of the request reply the content of the reply to the request as a return value reply_arguments the content of the reply to the request as a set of OUT/INOUT arguments (if any) that were writen by the method call

record_request_repl

public void record_request_repl(java.lang.String cl_id,
                                org.omg.CORBA.Object to,
                                java.lang.String operation,
                                org.omg.CORBA.Any[] arguments,
                                int retention_id,
                                org.omg.CORBA.Any reply)
Method used to record a reply to an outgoing request from the replica group (or even from a normal client that calls a server and has an interceptor that calls this method whnever a reply is received back)
Parameters:
cl_id - the client identifier of the request for which the reply is logged now to the target object of the request for which the reply is recorded now arguments the set of OUT/INOUT parameters of the request that are written and returned by the method call retention_id the retention identifier of the request sent by the client reply the return value of the request

record_part_get_st_upd_reply

public void record_part_get_st_upd_reply(long object,
                                         int current_retention_id,
                                         java.lang.String oper)
Method used to record a part of the reply to the get_state or get_update request that is sent by the chekpoint/update thread to the application replica - this operation is needed because the information recorded here is no longer available when the final state information is recorded
Parameters:
object - the identifier of the group whose member is the checkpointed replica current_retention_id the current retention identifier of outgoing CORBA calls from the replica whose state was checkpointed now oper the name of the operation:get_state or get_update

record_rest_get_st_upd_reply

protected void record_rest_get_st_upd_reply(java.lang.String oper,
                                            long object,
                                            byte[] state,
                                            long timestamp)
Method used to record the rest (state/update) of the reply to the get_state or get_update request that is sent by the chekpoint/update thread to the application replica
Parameters:
oper - the name of the operation:get_state or get_update object the identifier of the group whose member is the checkpointed replica state the state/update that is recorded after the checkpointing method was called timestamp a timestamp indicating to which get_state/get_update operation in the call log this reply record corresponds

record_reply_exc

public void record_reply_exc(long source,
                             java.lang.String client_id,
                             int retention_id,
                             char method_type)
This method is used to signal when in the server interceptor and an exception is sent to the client, that the method was executed; thus, in case it has the type "update" the waiting method calls have to be notified
Parameters:
source - the identifier of the group on whose replica the method generating the exception was called client_id the client identifier of the request retention_id the retention identifier of the request method_type the type of the method (update/read-only)

react_set_st_upd_reply

public void react_set_st_upd_reply(long object)
Method used in a backup when warm passive replication is used, as soon as the set_state method is called on that backup when the state is read from the primary; the "reaction" to that call of set_state is that the method calls logged since the last checkpoint are removed - this is what happens in the method react_set_....
Parameters:
object - the identifier of the group of which this backup is a member

do_checkpointing

public void do_checkpointing(Checkpointable checkpointed_obj,
                             long obj_id,
                             long checkpoint_interval,
                             Checkpointable[] transfer_to,
                             boolean transfer,
                             boolean periodic)
Method called (mainly by the Replication Manager) when a new replica of a group is installed and needs to be checkpointed
Parameters:
checkpointed_obj - the reference of the CORBA object replica that has to be checkpointed obj_id the identifier of the group of which the checkpointed object is a member checkpoint_interval the checkpointing interval (if checkpointing is periodic) transfer_to in case of warm passive replication this contains the list of backups where the state has to be transfered transfer a boolean variable indicating whether the state has to be transfered to the backups or not periodic indicates whether checkpointing has to be done periodically

do_updating

public void do_updating(Updateable updated_obj,
                        long obj_id,
                        long update_interval,
                        Updateable[] transfer_to,
                        boolean transfer,
                        boolean periodic)
Method called (mainly by the Replication Manager) when a new replica of a group is installed and needs to be checkpointed by reading state changes (updates) from time to time
Parameters:
updated_obj - the reference of the CORBA object replica that has to be checkpointed by update readings obj_id the identifier of the group of which the checkpointed object is a member update_interval the checkpointing interval (if checkpointing is periodic) transfer_to in case of warm passive replication this contains the list of backups where the state update has to be transfered transfer a boolean variable indicating whether the state update has to be transfered to the backups or not periodic indicates whether checkpointing has to be done periodically

wait_update_method

protected void wait_update_method(LoggingRecoveryController_impl.NotifySObj event)

trigger_one_thread

private void trigger_one_thread(long obj_id)

get_ch_thread

private LoggingRecoveryController_impl.CheckpointThread get_ch_thread(Checkpointable checkpointed_obj)

get_up_thread

private LoggingRecoveryController_impl.UpdateThread get_up_thread(Updateable updated_obj)

stop_checkpointing

public void stop_checkpointing(Checkpointable checkpointed_obj)
Method called (usually by the Replication Manager when a member of the group failed) to stop the checkpointing of the replica

stop_updating

public void stop_updating(Updateable updated_obj)
Method called (usually by the Replication Manager when a member of the group failed) to stop the checkpointing(state change reading) of the replica

remove_wp_log

private void remove_wp_log(long id)

get_last_records_ch

private LogRecord[] get_last_records_ch(long id,
                                        java.util.Vector logVectorVector,
                                        boolean clear)

get_last_records_upd

private LogRecord[] get_last_records_upd(long id,
                                         java.util.Vector logVectorVector,
                                         boolean clear)

recover_new_replica_upd

public void recover_new_replica_upd(long o_id,
                                    LoggingRecoveryController new_lrc,
                                    Updateable to_recover,
                                    int repl_s)
Method called on the host where the failed primary resides, in order to install a backup as a primary, after replaying the last logged calls; this method is called in case the primary was checkpointed by update readings
Parameters:
o_id - the identifier of the group of which this backup is a member new_lrc the CORBA object reference of the Logging Recovery Controller residing on the machine where the backup that has to become primary resides; this LRC will replay the last requests on the backup, after setting the updates (in case of cold replication) to_recover the CORBA object reference of the backup that will become a primary repl_s the replication style of the replicated group

recover_new_replica_ch

public void recover_new_replica_ch(long o_id,
                                   LoggingRecoveryController new_lrc,
                                   Checkpointable to_recover,
                                   int repl_s)
Method called on the host where the failed primary resides, in order to install a backup as a primary, after replaying the last logged calls; this method is called in case the primary was checkpointed by state readings
Parameters:
o_id - the identifier of the group of which this backup is a member new_lrc the CORBA object reference of the Logging Recovery Controller residing on the machine where the backup that has to become primary resides; this LRC will replay the last requests on the backup, after setting the state (in case of cold replication) to_recover the CORBA object reference of the backup that will become a primary repl_s the replication style of the replicated group

recover_new_replica_st_ch

public void recover_new_replica_st_ch(long o_id,
                                      LoggingRecoveryController new_lrc,
                                      Checkpointable to_recover,
                                      Checkpointable failed_obj)
Method called on the host where the failed primary resides, in order to install a backup as a primary, in case stateless replication is used, so that no replay of methods or state instalation is needed
Parameters:
o_id - the identifier of the group of which this backup is a member new_lrc the CORBA object reference of the Logging Recovery Controller residing on the machine where the backup that has to become primary resides to_recover the CORBA object reference of the backup that will become a primary failed_obj the CORBA reference of the failed primary

get_last_outgoing_ret_id_v

private int get_last_outgoing_ret_id_v(long id,
                                       java.util.Vector v,
                                       boolean clear)

get_last_outgoing_ret_id

public int get_last_outgoing_ret_id(long id,
                                    boolean clear)
Method called to obtain the retention identifier of the last outgoing request sent from the replica residing on the machine of this LRC

set_last_records

private java.util.Vector set_last_records(long id,
                                          LogRecord[] recs)

broadcast_method_call_par

private void broadcast_method_call_par(long objI,
                                       java.lang.String oper,
                                       org.omg.Dynamic.Parameter[] args,
                                       java.lang.String client_id,
                                       int retention_id,
                                       long expiration_time,
                                       char method_type,
                                       long mess_id)

broadcast_method_call_as

private void broadcast_method_call_as(long objI,
                                      java.lang.String oper,
                                      byte[] buffer,
                                      boolean big_e,
                                      org.omg.GIOP.Version vers,
                                      java.lang.String client_id,
                                      int retention_id,
                                      long expiration_time,
                                      char meth_type,
                                      long mess_id)

broadcast_reply

private void broadcast_reply(long objI,
                             java.lang.String client_id,
                             int retention_id,
                             org.omg.CORBA.Any result,
                             org.omg.CORBA.Any[] result_arguments,
                             char meth_type)

record_method_no_wait_par

public void record_method_no_wait_par(long objI,
                                      java.lang.String oper,
                                      org.omg.Dynamic.Parameter[] args,
                                      java.lang.String client_id,
                                      int retention_id,
                                      long expiration_time,
                                      char method_type,
                                      long mess_id)
Method called in case a call information record has to be logged, but without waiting for other methods to finish execution first - this is the case when a method call record is broadcast to warm backups by the primary
Parameters:
objI - the identifier of the group where the backup is a member oper the operation (method) name for which the call record is logged args the arguments of the call client_id the client identifier associated with the request for which call info is logged retention_id the retention identifier associated with the request for which call info is logged expiration_time the expiration time associated with the request for which call info is logged method_type the type of the method for which the information is logged mess_id a unique message identifier so that the call info recording request is delivered in a total order

record_method_no_wait_as

public void record_method_no_wait_as(long objI,
                                     java.lang.String oper,
                                     byte[] buffer,
                                     boolean big_e,
                                     org.omg.GIOP.Version vers,
                                     java.lang.String client_id,
                                     int retention_id,
                                     long expiration_time,
                                     char method_type,
                                     long mess_id)
Method called in case a call information record has to be logged, but without waiting for other methods to finish execution first - this is the case when a method call record is broadcast to warm backups by the primary
Parameters:
objI - the identifier of the group where the backup is a member oper the operation (method) name for which the call record is logged buffer the byte arraycontaining an unmarshalled format of the parameters of the call big_e a boolean value indicating whether the ordering of octets is big endian vers the version of the GIOP encoding of information client_id the client identifier associated with the request for which call info is logged retention_id the retention identifier associated with the request for which call info is logged expiration_time the expiration time associated with the request for which call info is logged method_type the type of the method for which the information is logged mess_id a unique message identifier so that the call info recording request is delivered in a total order

record_reply_no_notify

public void record_reply_no_notify(long objI,
                                   java.lang.String client_id,
                                   int retention_id,
                                   org.omg.CORBA.Any result,
                                   org.omg.CORBA.Any[] result_arguments,
                                   char meth_type)
Method called in case a reply information record has to be logged, but without notifying other waiting methods - this is the case when a method reply record is broadcast to warm backups by the primary
Parameters:
objI - the identifier of the group where the backup is a member client_id the client identifier associated with the request for which reply info is logged retention_id the retention identifier associated with the request for which reply info is logged result the result of the call in terms of a return value result_arguments the result of the call in terms of OUT and INOUT call parameters that were written by the method call meth_type the type of the method for which the information is logged

replay_last_requests

public void replay_last_requests(org.omg.CORBA.Object target,
                                 LogRecord[] last_rec,
                                 long objI,
                                 int current_retention_id,
                                 int repl_s)
Method called on the Logging Recovery Controller running on the host where the backup that becomes primary resides; the result will be that the last method calls logged since the last checkpoint are replayed on the backup
Parameters:
target - the CORBA object reference of the object on which the requests are replayed last_rec the last reords from the log; if replication style is cold passive, then the first element(s) in this array is the state (set of updates) to be set on the new primary before replay objI the identifier of the group whose member the backup is current_retention_id the value of the retention identifier for the last request sent out by the failed primary repl_s the replication style

remove_log

public void remove_log(long objId)
Method called to remove the log corresponding to a certain group

set_neighbours

public void set_neighbours(LoggingRecoveryController[] neigh)
Method called to set the other LRCs to which this LRC has to transfer method call info - in warm passive replication