Abstract:
A method and a system for process upgrade are disclosed. A source process implements data interaction, via a socket interface, with a far end entity connected with the socket interface. When the source process intends to upgrade itself, the source process copies its process data to a target process and determines if the data from the far end entity received via socket interface is complete. If it is determined that the data is complete, the source process ceases data interaction with the socket interface and copies the received data to the target process. After the data is copied, the source process sends an upgrade and switch indication to the target process and enables the target process to send an upgrade and switch request to the socket interface. The socket interface then switches a socket interface service to the target process. Accordingly, the technical solutions according to the present invention realize a reliable and smooth process upgrade without disconnecting the socket connection.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of International Application No. PCT/CN2008/070812, filed on Apr. 25, 2008, which claims priority to Chinese Application No. 200710028054.9, filed on May 17, 2007, both of which are hereby incorporated by reference in their entireties. 
    
    
     FIELD OF THE INVENTION 
     The present invention relates to communication field, and more specifically, to a method and system for process upgrade. 
     BACKGROUND 
     Process upgrade refers to start, in a system supporting multiple processes, a new process, copy the service in a source process to the new process, and deregister the source process. As a result, the process is upgraded. Process upgrade allows a process to be upgraded to a higher version so that defects or loopholes in the version of the source software process can be fixed. 
     In the case where the source process is an on-line process, i.e. Transfer Control Protocol (TCP) socket process, it is not easy to conduct an on-line upgrade for TCP socket process due to the complexity of TCP connection. Generally, socket connection needs to be released first. After the source process is upgraded to a new connected process, the socket connection is re-established. Therefore, due to the interruption in the socket connection during an upgrade procedure, data loss and process instability may be incurred and a far end entity coupled to the socket interface may also perceive the update of the local entity. 
     SUMMARY 
     A method and system for process upgrade are provided according to embodiments of the present invention so as to achieve process upgrade without disconnecting the socket connection. 
     To this end, the technical solutions according to the embodiments of the present invention are presented as follows. 
     A method for process upgrade is provided according to one embodiment of the present invention, wherein a source process conducts data interaction via a socket interface with a far end entity coupled to the socket interface. 
     The method includes: copying, by the source process, its process data to a target process; determining, by the source process, if the data from the far end entity received by a socket interface is complete; ceasing, if the data is complete, data interaction with the socket interface; and copying the received data to the target process; and sending, by the source process, an upgrade and switch indication to the target process; sending, by the target process, a request for upgrade and switch to the socket interface; switching, by the socket interface, a socket interface service to the target process. 
     A system for process upgrade is also disclosed according to one embodiment of the present invention. The system includes a source process unit, a socket interface unit and a target process unit. 
     The source process unit is configured to conduct data interaction with a far end entity coupled to the socket interface unit by virtue of a socket interface service provided by the socket interface unit; copy process data of the source process unit to the target process unit when the source process unit is upgrading its process; determine if the data from the far end entity received via the socket interface unit is complete; ceasing, if the data is complete, the data interaction with the socket interface unit; copy the received data to the target process unit; and send an upgrade and switch indication to the target process unit after the copying ends. 
     The target process unit is configured to send to the socket interface unit an upgrade and switch request after receiving the upgrade and switch indication from the source process unit; and employ the socket interface service provided by the socket interface unit to conduct data interaction with the far end entity coupled to the socket interface unit. 
     The socket interface unit is configured to provide the socket interface service to the target process unit and switch the socket interface service to the target process unit after receiving the upgrade and switch request from the target process unit. 
     As can be seen from the foregoing technical solutions, when the source process is upgrading itself, the source process copies its process data to the target process and determines if the data from the far end entity received via the socket interface are complete. If it is determined that the data is complete, the source process ceases the data interaction with the socket interface and copies the received data to the target process. After the copying, the source process sends an upgrade and switch indication to the target process so as to have the target process send an upgrade and switch request to the socket interface. The socket interface subsequently switches the socket interface service to the target process. As such, the process is upgraded reliably and smoothly without disconnecting the socket connection. In addition, the far end entity connected with the socket interface may not perceive the upgrade of the local entity before and after the upgrade procedure. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a block diagram of a system for process upgrade according to one embodiment of the present invention; 
         FIG. 2  is a block diagram of a source process unit  1  in  FIG. 1 ; and 
         FIG. 3  is a flowchart of a method for process upgrade according to one embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
     The purposes, technical solutions and advantages concerning embodiments of the present invention will become more readily appreciated by reference to the following description of the embodiments, when taken in conjunction with the accompanying drawings. 
       FIG. 1  is a block diagram of a system for process upgrade according to one embodiment of the present invention. As illustrated in  FIG. 1 , a system for process upgrade according to one embodiment of the present invention may include a source process unit  1 , a target process unit  2 , a socket interface unit  3 , a first socket lib module  4  and a second socket lib module  5 . Functionalities of each unit shown in  FIG. 1  and relationship among these units are detailed below. 
     In  FIG. 1 , the source process unit  1  is configured to determine, during process upgrade, if the data received from a far end entity is complete. If the data is complete, data interaction with a socket interface unit  3  is ceased and the data received from the far end entity is copied to a target process unit  2 . After the copying procedure is over, the source process unit  1  sends to the target process unit  2  an upgrade and switch indication. 
       FIG. 2  is a block diagram of a source process unit  1  shown in  FIG. 1 . As illustrated in  FIG. 1 , the source process unit  1  primarily includes a data backup unit  11 , an acquisition unit  12 , a determination unit  13  and a unit for sending upgrade and switch indication  14 . 
     The data backup unit  11  is configured to copy process data of the source process unit  1  and the data from the far end entity received by the source process unit  1  via the socket interface unit  3  to the target process unit  2 . 
     The process data of the source process unit 1  includes parameters of invoked function after the initiation of source process and some command data of the source process such as various parameter configuration data and process status data generated during the running of the process. The purpose for data backup is to ensure that the data in the target process correspond to the data in the source process so that all the changed data in the source process during backup procedure are copied to the target process. Specifically, the backup procedure can be divided into batch backup and real-time backup. Because the socket interface unit  3  may keep sending the received data message to the source process unit  1 , therefore, when conducting a batch backup, the data backup procedure will not stop until the source process unit  1  ceases data interaction with the socket interface unit  3 . 
     The acquisition unit  12  is configured to acquire information of the length of the data received from the far end entity. 
     Specifically, in data receiving procedure, the acquisition unit  12  may acquire the information of the length of the data message by detecting a header of the data message received from the far end entity, where the data message is received by the source process unit  1  in which the acquisition unit  12  locates. 
     The determination unit  13  is configured to determine, based on the information of the length of the data, if the data received from the far end entity is complete, wherein the information of the length of the data is acquired by the acquisition unit  12  and the data is received from the far end entity. The determination unit  13  is further configured to generate a corresponding determination result. When the source process determines that the determination result is yes, the determination unit  13  ceases data interaction with the socket interface unit  3 . 
     The unit for sending upgrade and switch indication  14  is configured to send an upgrade and switch indication to the target process unit  2  after the data backup unit  11  completes the backup. 
     Next, other units other than the source process unit  1  in  FIG. 1  will be described. 
     The target process unit  2  is configured to send an upgrade and switch request to the socket interface unit  3  after receiving the upgrade and switch indication from the source process unit  1 . 
     The upgrade and switch request carries a process ID associated with the target process and a service name which is the same as the source process. 
     The socket interface unit  3  is configured to switch a socket interface service to the target process unit  2  after receiving the upgrade and switch request from the target process unit  2 , so that the target process unit  2  may interact data via the socket interface unit  3  with the far end entity coupled to the socket interface unit  3 . 
     The socket interface unit  3  includes a socket stub module  31  and a socket interface module  32  for providing socket interface service. The function of the socket stub module  31  will be described below. 
     The source process unit  1  is provided with a first socket lib module  4 . The target process unit  2  is provided with a second socket lib module  5 . The socket interface unit  3  is provided with a socket stub module  31 . In the socket-lib mechanism, the socket lib module is equivalent to a concise pseudo socket module that runs with an application in a same process. The socket stub module is equivalent to a proxy module that runs with a socket interface module in a same process. The socket-lib mechanism makes the application blind to the communication between processes. The application feels like using a standard socket interface without perceiving any invocation across different processes. With socket-lib mechanism, the function invocation between processes is transformed to an Inter-Process Communication (IPC) message. As such, the socket interface service is extended and expanded across different processes, while the socket interface itself does not change. 
     Before the process is upgraded and switched, a first relationship between the source process ID and the socket interface ID is created in the socket stub module  31 . According to the first relationship, the socket stub module  31  may communicate with the source process unit  1  via the first socket lib module  4 . In this way, the source process unit  1  may obtain a corresponding socket service of the socket interface module  32  via the socket lib module  4  and the socket stub module  31 . When the source process unit  1  requests a socket service from the socket stub module  31 , the source process unit  1  registers its service name with the socket stub module  31  so that the socket stub module  31  may manage a corresponding service. 
     When upgrading the process, the target process unit  2  sends to the socket stub module  31  an upgrade and switch request carrying a target process ID and a service name which is the same as the source process. After receiving the upgrade and switch request, the socket stub module  31  finds the first relationship based on the service name and replaces the source process ID in the first relationship with the target process ID. The target process unit  2  acquires, based on the updated first relationship, the socket service of the socket interface module  32  via the second socket lib module  5  and the socket stub module  31 . Accordingly, the on-line upgrade of the process is achieved successfully and a corresponding socket connection does not need to be released during process upgrade so that the far end entity may not perceive the process upgrade of the local entity. 
       FIG. 3  is a flowchart of a method for process upgrade according to one embodiment of the present invention. As illustrated in  FIG. 3 , the method includes the following steps. 
     Step s 301 , a target process is created and the process data of a source process is copied to the target process. 
     The target process is created by executing a command of opening an application of higher version. The process data of the source process includes parameters of invoked function after the initiation of the process and some command data, etc. The purpose of data backup is to ensure the data in the target process to be identical with the data in the source process. Specifically, the backup procedure can be divided into batch backup and real-time backup. Because the socket interface may keep sending the received data message to the source process, therefore, when conducting a batch backup, the data backup procedure will not come to an end until the source process ceases data interaction with the socket interface. 
     Step s 302 : The socket interface sends a data message to the source process. 
     Here, the socket interface sends the data message received from a far end entity to the source process. The socket interface is a TCP socket interface or a User Datagram Protocol (UDP) socket interface or a RAW IP socket interface. 
     Step s 303 : The source process acquires the information of the length of the data message received from the far end entity. 
     Specifically, the source process may obtain the information of the length of the data message by detecting the header of the received data message. 
     Step s 304 : The source process determines, based on the acquired information of the length of the data received from the far end entity, if the data it receives is complete. If the data is complete, the source process stops the data interaction with the socket interface. 
     Step s 305 : The source process copies the data from the socket interface to the target process to ensure that the data in the target process is the same as the data in the source process. 
     Here, according to steps s 305  and step s 301 , data in the source process is copied to the target process after the source process stops data interaction with the socket interface. As such, the data in the target process and the data in the source process are identical. 
     Step s 306 : The source process sends an upgrade and switch indication to the target process. 
     The purpose of sending an upgrade and switch indication to the target process is to inform the target process that the data backup is completed and the target process may request the socket service from the socket interface. 
     Step s 307 : The target process sends an upgrade and switch request to the socket interface. 
     Here, the upgrade and switch request carries a set target process ID. 
     Step s 308 : After the socket interface receives the upgrade and switch request, the socket interface switches the socket service to the target process so that the target process may conduct data interaction with the far end entity coupled to the socket interface unit via the socket interface. 
     Step s 309 : The source process is deregistered. 
     In step s 307 , the upgrade and switch request carries a process ID associated with the target process and a service name which is the same as the source process. In one embodiment, a socket-lib mechanism is used to allow the application process to continue receiving socket service in case of cross-process invocation. In the socket-lib mechanism, the socket lib module is equivalent to a concise pseudo socket module that runs with an application in a same process. The socket stub module is equivalent to a proxy module that runs with a socket interface module in a same process. The socket-lib mechanism makes the application blind to the communication between processes. The application feels like using a standard socket interface without perceiving any invocation across different processes. With socket-lib mechanism, the function invocation between processes is changed to IPC message. As such, the socket interface service is extended and expanded across different processes, while the socket interface itself does not change. 
     Before the process is upgraded and switched, a first relationship between the source process ID and the socket interface ID is created in the socket stub module corresponding to the socket interface. According to the first relationship, the socket lib module may communicate with the source process. In this way, the source process may obtain a corresponding socket service of the socket interface via the socket lib module and the socket stub module. When the source process requests a socket service from the socket stub module, the source process registers its service name with the socket stub module so that the socket stub module may manage a corresponding service. 
     When upgrading the process, the target process sends to the socket stub module an upgrade and switch request carrying a target process ID and a service name which is the same as the source process. After receiving the upgrade and switch request, the socket stub module finds the first relationship based on the service name and replaces the source process ID in the first relationship with the target process ID so as to update the first relationship. The target process acquires, based on the updated first relationship, the socket service of the socket interface via the second socket lib module and the socket stub module. Accordingly, the on-line upgrade of the process is achieved successfully and a corresponding socket connection does not need to be released when upgrading the process so that the far end entity may not perceive the process upgrade of the local entity. 
     Any two of the source process, socket interface and the target process as mentioned in various embodiments of the present invention communicate via an IPC message. 
     The foregoing teachings are merely preferred embodiments of the present invention. It shall be noted that improvements and modifications can be made by the ordinary people skilled in the art without departing from the principle of the present invention. These improvements and modifications shall be construed as fall within the scope of protection of the present invention.