Source:
public boolean updateCatalog(String diffCmds, CatalogContext context, CatalogSpecificPlanner csp, boolean requiresSnapshotIsolationboolean, boolean isMPI, long uniqueId, long spHandle) { m_context = context; m_ee.setBatchTimeout(m_context.cluster.getDeployment().get("deployment"). getSystemsettings().get("systemsettings").getQuerytimeout()); m_loadedProcedures.loadProcedures(m_context, m_backend, csp); if (isMPI) { return true; } boolean DRCatalogChange = false; CatalogMap<Table> tables = m_context.catalog.getClusters().get("cluster").getDatabases().get("database").getTables(); for (Table t : tables) { if (t.getIsdred()) { DRCatalogChange |= diffCmds.contains("tables#" + t.getTypeName()); } } if (requiresSnapshotIsolationboolean && m_snapshotter.isEESnapshotting()) { hostLog.info(String.format("Site %d performing schema change operation must block until snapshot is locally complete.", CoreUtils.getSiteIdFromHSId(m_siteId))); try { m_snapshotter.completeSnapshotWork(m_sysprocContext); hostLog.info(String.format("Site %d locally finished snapshot. Will update catalog now.", CoreUtils.getSiteIdFromHSId(m_siteId))); } catch (InterruptedException e) { VoltDB.crashLocalVoltDB("Unexpected Interrupted Exception while finishing a snapshot for a catalog update.", true, e); } } m_ee.quiesce(m_lastCommittedSpHandle); m_ee.updateCatalog(m_context.m_uniqueId, diffCmds); if (DRCatalogChange) { final Pair<Long, String> catalogCommands = DRCatalogDiffEngine.serializeCatalogCommandsForDr(m_context.catalog); generatedDRCatalogChangeEvent(uniqueId, m_lastCommittedSpHandle, spHandle, catalogCommands); } return true; }

Target:
public boolean updateCatalog(String diffCmds, CatalogContext context, CatalogSpecificPlanner csp, boolean requiresSnapshotIsolationboolean, boolean isMPI, long uniqueId, long spHandle) { m_context = context; m_ee.setBatchTimeout(m_context.cluster.getDeployment().get("deployment"). getSystemsettings().get("systemsettings").getQuerytimeout()); m_loadedProcedures.loadProcedures(m_context, m_backend, csp); if (isMPI) { return true; } boolean DRCatalogChange = false; CatalogMap<Table> tables = m_context.catalog.getClusters().get("cluster").getDatabases().get("database").getTables(); for (Table t : tables) { if (t.getIsdred()) { DRCatalogChange |= diffCmds.contains("tables#" + t.getTypeName()); if (DRCatalogChange) { break; } } } if (requiresSnapshotIsolationboolean && m_snapshotter.isEESnapshotting()) { hostLog.info(String.format("Site %d performing schema change operation must block until snapshot is locally complete.", CoreUtils.getSiteIdFromHSId(m_siteId))); try { m_snapshotter.completeSnapshotWork(m_sysprocContext); hostLog.info(String.format("Site %d locally finished snapshot. Will update catalog now.", CoreUtils.getSiteIdFromHSId(m_siteId))); } catch (InterruptedException e) { VoltDB.crashLocalVoltDB("Unexpected Interrupted Exception while finishing a snapshot for a catalog update.", true, e); } } m_ee.quiesce(m_lastCommittedSpHandle); m_ee.updateCatalog(m_context.m_uniqueId, diffCmds); if (DRCatalogChange) { final Pair<Long, String> catalogCommands = DRCatalogDiffEngine.serializeCatalogCommandsForDr(m_context.catalog); generateDREvent( EventType.CATALOG_UPDATE, uniqueId, m_lastCommittedSpHandle, spHandle, catalogCommands.getSecond().getBytes(Charsets.UTF_8)); } return true; }