|
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--org.omg.PortableServer.Servant | +--org.omg.FT.LoggingRecoveryControllerPOA | +--org.omg.FT.LoggingRecoveryController_impl
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 |
java.lang.Object wait_fall_asleep
java.util.Hashtable logTable
LoggingRecoveryController[] neighbours
java.util.Vector checkpoint_threads
java.util.Vector update_threads
org.omg.CORBA.ORB orb
Constructor Detail |
public LoggingRecoveryController_impl(org.omg.CORBA.ORB o)
Method Detail |
private int get_last_ret_id(long objI)
private boolean equals(byte[] a, byte[] b)
private java.util.Vector logVectorVector(long id)
private LogRecord get_its_reply(java.util.Vector logVector, java.lang.String oper, java.lang.String client_id, int ret_id, int s_pos)
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)
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 truepublic 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)
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 truepublic ResultResultArgs call_reply(long target, java.lang.String client_id, int retention_id)
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 forpublic ResultResultArgs request_reply(java.lang.String cl_id, int retention_id, org.omg.CORBA.Object to)
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 sentpublic void record_replies(LogRecord[] replies)
replies
- the set of call replies to be written in the logpublic 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)
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 therepublic 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)
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 callpublic 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)
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 requestpublic void record_part_get_st_upd_reply(long object, int current_retention_id, java.lang.String oper)
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_updateprotected void record_rest_get_st_upd_reply(java.lang.String oper, long object, byte[] state, long timestamp)
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 correspondspublic void record_reply_exc(long source, java.lang.String client_id, int retention_id, char method_type)
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)public void react_set_st_upd_reply(long object)
object
- the identifier of the group of which this backup is a memberpublic void do_checkpointing(Checkpointable checkpointed_obj, long obj_id, long checkpoint_interval, Checkpointable[] transfer_to, boolean transfer, boolean periodic)
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 periodicallypublic void do_updating(Updateable updated_obj, long obj_id, long update_interval, Updateable[] transfer_to, boolean transfer, boolean periodic)
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 periodicallyprotected void wait_update_method(LoggingRecoveryController_impl.NotifySObj event)
private void trigger_one_thread(long obj_id)
private LoggingRecoveryController_impl.CheckpointThread get_ch_thread(Checkpointable checkpointed_obj)
private LoggingRecoveryController_impl.UpdateThread get_up_thread(Updateable updated_obj)
public void stop_checkpointing(Checkpointable checkpointed_obj)
public void stop_updating(Updateable updated_obj)
private void remove_wp_log(long id)
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)
public void recover_new_replica_upd(long o_id, LoggingRecoveryController new_lrc, Updateable to_recover, int repl_s)
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 grouppublic void recover_new_replica_ch(long o_id, LoggingRecoveryController new_lrc, Checkpointable to_recover, int repl_s)
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 grouppublic void recover_new_replica_st_ch(long o_id, LoggingRecoveryController new_lrc, Checkpointable to_recover, Checkpointable failed_obj)
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 primaryprivate int get_last_outgoing_ret_id_v(long id, java.util.Vector v, boolean clear)
public int get_last_outgoing_ret_id(long id, boolean clear)
private java.util.Vector set_last_records(long id, LogRecord[] recs)
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_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_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)
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)
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 orderpublic 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)
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 orderpublic 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)
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 loggedpublic void replay_last_requests(org.omg.CORBA.Object target, LogRecord[] last_rec, long objI, int current_retention_id, int repl_s)
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 stylepublic void remove_log(long objId)
public void set_neighbours(LoggingRecoveryController[] neigh)
|
|||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |