question: public void restoreTopology ( Iterable < TcpDiscoveryNode > nodes , long topVer ) { assert ! F . isEmpty ( nodes ) ; assert topVer > 0 ; rwLock . writeLock ( ) . lock ( ) ; try { locNode . internalOrder ( topVer ) ; clear ( ) ; boolean firstAdd = true ; for ( TcpDiscoveryNode node : nodes ) { if ( nodesMap . containsKey ( node . id ( ) ) ) continue ; nodesMap . put ( node . id ( ) , node ) ; if ( firstAdd ) { this . nodes = new TreeSet < > ( this . nodes ) ; firstAdd = false ; } node . lastUpdateTime ( U . currentTimeMillis ( ) ) ; this . nodes . add ( node ) ; } nodeOrder = topVer ; initializeMinimumVersion ( ) ; } finally { rwLock . writeLock ( ) . unlock ( ) ; } }
target:  Restores topology from parameters values. <p> This method is called when new node receives topology from coordinator. In this case all nodes received are remote for local. <p> Also initializes nodes last update time with current system time.