WAS Synchronization Process

WAS Synchronization Process explained below for reference.

Few months back while working for a customer, I had to troubleshoot few issues and one of them was Synchronization. Customer has asked me a detailed explanation on how Synchronization works in Websphere Application server.

From IBM Product perspective, I found one of the IBM Technote mentioning clearly on how Synchronization works in WAS.

As mentioned in Technote, Synchronization operations are invoked by node agent in the cases of auto sync or user explicitly initiated synchronization, etc; or by the syncNode/addNode processes when syncNode.bat/sh or addNode.bat/sh is invoked. In all synchronization scenarios, the process initializing the synchronization operation communicates with the dmgr. The dmgr retrieves information about the state of master repository and compare that with the node repository. A list of changed folders is returned back to the node agent, after comparing the epochs of the two repositories. Next, for each folder in the list, dmgr compares the digests of the documents to see if files are indeed different. The changed files are transferred to the node via file transfer and checked into node repository by the node agent. A synchronization operation can be started if there is not another synchronization operation already going on; otherwise you wait for the on-going synchronization operation to finish before a new one is started.

Synchronization can be performed in below ways,

Automatic synchronization (performed by node agent in the background periodically)
User explicitly initiated synchronization (through console and wsadmin, or MBean API, while node agent is running)
syncNode.bat/sh (require node agent to be stopped)
Synchronization before Application Server startup (if Startup Synchronization flag is checked)
Synchronization during node federation (performed by addNode process as one of the tasks during node federation)
During restart JMX call on NodeAgent MBean, if the first parameter, syncFirst, is set to true

Technote clearly explain about Epoch and Digest that are used during Synchronization process.

Though most of the customers stop all servers and then sync, i would prefer the method of using syncNode.sh by stopping the nodeagent and then performing sync across all nodes sequentially.