docs: void doInitiation(RejoinMessage message)
      {
          m_coordinatorHsId = message.m_sourceHSId;
          m_hasPersistentTables = message.schemaHasPersistentTables();
          if (m_hasPersistentTables) {
              m_streamSnapshotMb = VoltDB.instance().getHostMessenger().createMailbox();
              m_rejoinSiteProcessor = new StreamSnapshotSink(m_streamSnapshotMb);
              // Start the watchdog so if we never get data it will notice
              kickWatchdog(TimerCallback.initialTimer());
          } else {
              m_streamSnapshotMb = null;
              m_rejoinSiteProcessor = null;
          }
  
          // MUST choose the leader as the source.
          long sourceSite = m_mailbox.getMasterHsId(m_partitionId);
          // The lowest partition has a single source for all messages whereas all other partitions have a real
          // data source and a dummy data source for replicated tables that are used to sync up replicated table changes.
          boolean haveTwoSources = VoltDB.instance().getLowestPartitionId() != m_partitionId;
          // Provide a valid sink host id unless it is an empty database.
          long hsId = (m_rejoinSiteProcessor != null
                          ? m_rejoinSiteProcessor.initialize(haveTwoSources?2:1,
                                                             message.getSnapshotDataBufferPool(),
                                                             message.getSnapshotCompressedDataBufferPool())
                          : Long.MIN_VALUE);
  
          REJOINLOG.debug(m_whoami
                  + "received INITIATION message. Doing rejoin"
                  + ". Source site is: "
                  + CoreUtils.hsIdToString(sourceSite)
                  + " and destination rejoin processor is: "
                  + CoreUtils.hsIdToString(hsId)
                  + " and snapshot nonce is: "
                  + message.getSnapshotNonce());
  
          registerSnapshotMonitor(message.getSnapshotNonce());
          // Tell the RejoinCoordinator everything it will need to know to get us our snapshot stream.
          RejoinMessage initResp = new RejoinMessage(m_mailbox.getHSId(), sourceSite, hsId);
          m_mailbox.send(m_coordinatorHsId, initResp);
  
          // Start waiting for snapshot data
          m_taskQueue.offer(this);
      }