@@ -1932,7 +1932,7 @@ static void MtmCheckControlFile(void)
19321932if (f == NULL ) {
19331933elog (FATAL ,"Failed to create mmts_control file: %m" );
19341934}
1935- Mtm -> donorNodeId = -1 ;
1935+ Mtm -> donorNodeId = MtmNodeId ;
19361936fprintf (f ,"%s:%d\n" ,MtmClusterName ,Mtm -> donorNodeId );
19371937fclose (f );
19381938}
@@ -2706,7 +2706,7 @@ MtmReplicationMode MtmGetReplicationMode(int nodeId, sig_atomic_t volatile* shut
27062706MtmLock (LW_EXCLUSIVE );
27072707if (Mtm -> status == MTM_RECOVERY ) {
27082708recovery = true;
2709- if ((Mtm -> recoverySlot == 0 && (Mtm -> donorNodeId < 0 || Mtm -> donorNodeId == nodeId ))
2709+ if ((Mtm -> recoverySlot == 0 && (Mtm -> donorNodeId == MtmNodeId || Mtm -> donorNodeId == nodeId ))
27102710|| Mtm -> recoverySlot == nodeId )
27112711{
27122712/* Choose for recovery first available slot or slot of donor node (if any) */
@@ -2819,7 +2819,7 @@ MtmReplicationStartupHook(struct PGLogicalStartupHookArgs* args)
28192819}
28202820}else if (strcmp ("mtm_restart_pos" ,elem -> defname )== 0 ) {
28212821if (elem -> arg != NULL && strVal (elem -> arg )!= NULL ) {
2822- recoveryStartPos = intVal ( elem -> arg );
2822+ sscanf ( strVal ( elem -> arg ), "%lx" , & recoveryStartPos );
28232823}else {
28242824elog (ERROR ,"Restart position is not specified" );
28252825}