Class DataService
java.lang.Object
org.jumpmind.symmetric.service.impl.AbstractService
org.jumpmind.symmetric.service.impl.DataService
- All Implemented Interfaces:
IDataService
,IService
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclass
static class
protected class
protected class
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final DateTimeFormatter
protected Map<IHeartbeatListener,
Long> static final int
static final int
static final String
Fields inherited from class org.jumpmind.symmetric.service.impl.AbstractService
log, parameterService, platform, sqlTemplate, sqlTemplateDirty, symmetricDialect, tablePrefix
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint
protected void
protected void
convertDataToReload
(Data data, Table table, TriggerHistory hist, String nodeId) protected Map<String,
TableReloadRequest> convertReloadListToMap
(List<TableReloadRequest> reloadRequests, List<TriggerRouter> triggerRouters, boolean isFullLoad, boolean isChannelLoad) int
long
int
countDataInRange
(long firstDataId, long secondDataId) Count the number of data ids in a rangecreateData
(String catalogName, String schemaName, String tableName) createData
(String catalogName, String schemaName, String tableName, String whereClause) createData
(ISqlTransaction transaction, String catalogName, String schemaName, String tableName, String whereClause) protected Data
createData
(ISqlTransaction transaction, Trigger trigger, String whereClause) protected void
createPurgeEvent
(ISqlTransaction transaction, String sql, Node targetNode, Node sourceNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, boolean isLoad, long loadId, String createBy) protected void
createPurgeEvent
(ISqlTransaction transaction, String sql, Node targetNode, Node sourceNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, boolean isLoad, long loadId, String createBy, AbstractBatch.Status outgoingBatchStatus) void
createTableReloadStatus
(ISqlTransaction transaction, long loadId, boolean isFullLoad, String sourceNodeId, String targetNodeId) void
deleteAllDataGaps
(ISqlTransaction transaction) void
void
deleteDataGap
(ISqlTransaction transaction, DataGap gap) void
deleteDataGap
(DataGap gap) void
deleteDataGaps
(ISqlTransaction transaction, Collection<DataGap> gaps) protected void
deleteTableReloadRequest
(ISqlTransaction sqlTransaction, TableReloadRequest request) void
expireDataGaps
(ISqlTransaction transaction, Collection<DataGap> gaps) protected Data
fetchRecapturedData
(Data data, String recaptureTransactionId) Attempts to recapture expired data row, which is still relevant and assigns a new transaction IDfindCreateTimeOfData
(long dataId) findCreateTimeOfEvent
(long dataId) findData
(long dataId) findData
(long startDataId, long endDataId) findDataGaps
(boolean isExpired) long
long
long
findNextCreateTimeOfDataStartingAt
(long dataId) boolean
generateTransactionIdFromTimestamp
(String prefix, Instant instant) Helper.protected String
getCsvDataFor
(ISqlTransaction transaction, Trigger trigger, TriggerHistory triggerHistory, String whereClause, boolean pkOnly) protected long
getDataCountForReload
(Table table, Node targetNode, String selectSql) protected String
protected String
getDataSelectByBatchSql
(long batchId, long startDataId, String channelId) protected String
getDataSelectSql
(long batchId, long startDataId, boolean isContainsBigLob) protected String
getDataSelectSql
(long batchId, long startDataId, String channelId) protected List<IHeartbeatListener>
getHeartbeatListeners
(boolean force) Get a list ofIHeartbeatListener
s that are ready for a heartbeat according toIHeartbeatListener.getTimeBetweenHeartbeatsInSeconds()
protected String
getReloadChannelIdForTrigger
(Trigger trigger, Map<String, Channel> channels) getTableReloadRequest
(long loadId) getTableReloadRequest
(long loadId, String triggerId, String routerId) getTableReloadRequests
(long loadId) getTableReloadRequestToProcess
(String sourceNodeId) getTableReloadRequestToProcessByTarget
(String targetNodeId) getTableReloadStatusByLoadIdAndSourceNodeId
(long loadId, String sourceNodeId) getTableReloadStatusByTarget
(String targetNodeId) protected int
getTransformMultiplier
(Table table, TriggerRouter triggerRouter) protected boolean
hasColumnDataIntegrity
(Data data, TriggerHistory hist) void
heartbeat
(boolean force) UpdateNode
information for this node and callIHeartbeatListener
s.protected void
insertCreateEvent
(ISqlTransaction transaction, Node targetNode, TriggerHistory triggerHistory, boolean isLoad, long loadId, String createBy, boolean excludeIndices, boolean excludeForeignKeys, boolean excludeDefaults) void
insertCreateEvent
(ISqlTransaction transaction, Node targetNode, TriggerHistory triggerHistory, String channelId, boolean isLoad, long loadId, String createBy, boolean excludeIndices, boolean excludeForeignKeys, boolean excludeDefaults) void
insertCreateEvent
(ISqlTransaction transaction, Node targetNode, TriggerHistory triggerHistory, String channelId, boolean isLoad, long loadId, String createBy, boolean excludeIndices, boolean excludeForeignKeys, boolean excludeDefaults, AbstractBatch.Status outgoingBatchStatus) void
insertCreateEvent
(Node targetNode, TriggerHistory triggerHistory, boolean isLoad, long loadId, String createBy, boolean excludeIndices, boolean excludeForeignKeys, boolean excludeDefaults) void
insertCreateEvent
(Node targetNode, TriggerHistory triggerHistory, String createBy, boolean excludeIndices, boolean excludeForeignKeys, boolean excludeDefaults) long
insertData
(ISqlTransaction transaction, Data data) long
insertData
(Data data) long
insertDataAndDataEventAndOutgoingBatch
(ISqlTransaction transaction, Data data, String nodeId, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, long estimatedBatchRowCount) long
insertDataAndDataEventAndOutgoingBatch
(ISqlTransaction transaction, Data data, String nodeId, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, String overrideChannelId, long estimatedBatchRowCount) long
insertDataAndDataEventAndOutgoingBatch
(Data data, String nodeId, boolean isLoad, long loadId, String createBy) void
insertDataAndDataEventAndOutgoingBatch
(Data data, String channelId, List<Node> nodes, boolean isLoad, long loadId, String createBy) protected void
insertDataEvent
(ISqlTransaction transaction, long dataId, long batchId) protected void
insertDataEvent
(ISqlTransaction transaction, DataEvent dataEvent) protected long
insertDataEventAndOutgoingBatch
(ISqlTransaction transaction, long dataId, String channelId, String nodeId, DataEventType eventType, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, String tableName, long estimatedBatchRowCount) void
insertDataEvents
(ISqlTransaction transaction, List<DataEvent> events) void
insertDataGap
(ISqlTransaction transaction, DataGap gap) void
insertDataGap
(DataGap gap) void
insertDataGaps
(ISqlTransaction transaction, Collection<DataGap> gaps) void
insertHeartbeatEvent
(Node node, boolean isReload) Because we can't add a trigger on the _node table, we are artificially generating heartbeat events.protected void
insertPurgeEvent
(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, boolean isLoad, String overrideDeleteStatement, long loadId, String createBy) protected void
insertPurgeEvent
(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, boolean isLoad, String overrideDeleteStatement, long loadId, String createBy, AbstractBatch.Status outgoingBatchStatus) protected int
insertRecapturedData
(List<Data> insertList) Inserts recaptured data back into sym_datalong
insertReloadEvent
(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, String overrideInitialLoadSelect, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, long estimatedBatchRowCount) long
insertReloadEvent
(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, String overrideInitialLoadSelect, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, String channelId, long estimatedBatchRowCount) protected long
insertReloadEvent
(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, String overrideInitialLoadSelect, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, String channelId, long estimatedBatchRowCount, boolean isImmediate) boolean
insertReloadEvent
(TableReloadRequest request, boolean deleteAtClient) long
insertReloadEventImmediate
(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, String overrideInitialLoadSelect, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, String channelId, long estimatedBatchRowCount) insertReloadEvents
(Node targetNode, boolean reverse, List<TableReloadRequest> reloadRequests, ProcessInfo processInfo, List<TriggerRouter> triggerRouters, Map<Integer, ExtractRequest> extractRequests, IReloadGenerator reloadGenerator) protected long
insertRequestedOutgoingBatches
(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, String overrideInitialLoadSelect, long loadId, String createBy, String channelId, long totalRows, long maxRowsPerBatch, long batchCount) void
insertScriptEvent
(String channelId, Node targetNode, String script, boolean isLoad, long loadId, String createBy) void
insertScriptEvent
(ISqlTransaction transaction, String channelId, Node targetNode, String script, boolean isLoad, long loadId, String createBy) void
insertSqlEvent
(ISqlTransaction transaction, Node targetNode, String sql, boolean isLoad, long loadId, String createBy) void
insertSqlEvent
(ISqlTransaction transaction, Node targetNode, String sql, boolean isLoad, long loadId, String createBy, AbstractBatch.Status outgoingBatchStatus) void
insertSqlEvent
(ISqlTransaction transaction, TriggerHistory history, String channelId, Node targetNode, String sql, boolean isLoad, long loadId, String createBy) void
insertSqlEvent
(ISqlTransaction transaction, TriggerHistory history, String channelId, Node targetNode, String sql, boolean isLoad, long loadId, String createBy, AbstractBatch.Status outgoingBatchStatus) void
insertSqlEvent
(Node targetNode, String sql, boolean isLoad, long loadId, String createBy) void
insertTableReloadRequest
(ISqlTransaction transaction, TableReloadRequest request) void
protected boolean
isLocalNodeUsingBulkLoad
(String nodeId) listDataIds
(long batchId, String nodeId) int
reCaptureData
(long minDataId, long maxDataId) Attempts to recapture stale data rows between specified Ids and re-insert them back into sym_data with a new transaction ID.protected int
reCaptureData
(List<Data> dataList) Attempts to recapture stale data rows and re-insert them back into sym_data with a new transaction ID (all records are in one transaction).protected String[]
recaptureKeysForData
(Table table, Data data) Looks up values of primary keys for specified data row objectprotected String
recaptureWhereFilterForKeys
(Table table, TriggerHistory hist, String[] keys, Object[] values) Extracts filter for a where clause for specified values of primary keysvoid
reloadMissingForeignKeyRows
(long batchId, String nodeId, long dataId, long rowNumber) protected void
reloadMissingForeignKeyRows
(Data data, long batchId, String nodeId, long dataId, long rowNumber) void
reloadMissingForeignKeyRowsForLoad
(String sourceNodeId, long batchId, long rowNumber, Table table, CsvData data, String channelId) void
reloadMissingForeignKeyRowsReverse
(String sourceNodeId, Table table, CsvData data, String channelId, boolean sendCorrectionToPeers) reloadNode
(String nodeId, boolean reverseLoad, String createBy) reloadTable
(String nodeId, String catalogName, String schemaName, String tableName) reloadTable
(String nodeId, String catalogName, String schemaName, String tableName, String overrideInitialLoadSelect) protected String
reloadTable
(String nodeId, String catalogName, String schemaName, String tableName, String overrideInitialLoadSelect, String overrideChannelId, boolean isImmediate) reloadTableImmediate
(String nodeId, String catalogName, String schemaName, String tableName, String overrideInitialLoadSelect, String overrideChannelId) int
resendBatchAsReload
(long batchId, String nodeId) int
resendDataAsReload
(long minDataId, long maxDataId) protected void
resendDataAsReload
(List<Data> dataList, String nodeId) resolveTargetTables
(String sql, TriggerRouter triggerRouter, TriggerHistory triggerHistory, Node targetNode) selectDataFor
(Long batchId, String channelId) selectDataFor
(Long batchId, String targetNodeId, boolean isContainsBigLob) selectDataFor
(Batch batch) void
sendMissingForeignKeyRowsForLoad
(long batchId, String nodeId, long rowNumber, String rowData) void
sendNewerDataToNode
(ISqlTransaction transaction, String targetNodeId, String tableName, String pkCsvData, Date minCreateTime, String winningNodeId) boolean
sendSchema
(String nodeId, String catalogName, String schemaName, String tableName, boolean isLoad, boolean excludeIndices, boolean excludeForeignKeys, boolean excludeDefaults) void
sendScript
(String nodeId, String script, boolean isLoad) Sends a SQL command to the remote node for execution by creating a SQL event that is synced like other dataprotected void
updateLastHeartbeatTime
(List<IHeartbeatListener> listeners) int
updateTableReloadRequestsCancelled
(long loadId, String sourceNodeId) protected int
updateTableReloadRequestsError
(long loadId, String sourceNodeId, SqlException e) void
updateTableReloadRequestsLoadId
(ISqlTransaction transaction, long loadId, TableReloadRequest request) void
updateTableReloadStatusDataCounts
(ISqlTransaction transaction, long loadId, String sourceNodeId, long startBatchId, long endBatchId, long dataBatchCount, long rowsCount) updateTableReloadStatusDataLoaded
(ISqlTransaction transaction, long loadId, String sourceNodeId, long batchId, int batchCount, boolean isBulkLoaded) void
updateTableReloadStatusFailed
(ISqlTransaction transaction, long loadId, String sourceNodeId, long batchId) void
updateTableReloadStatusSetupCount
(ISqlTransaction transaction, long loadId, String sourceNodeId, int setupBatchCount) void
updateTableReloadStatusTableCount
(ISqlTransaction transaction, long loadId, String sourceNodeId, int tableCount) protected void
validate
(TableReloadRequest reloadRequest, List<TriggerRouter> triggerRouters) Methods inherited from class org.jumpmind.symmetric.service.impl.AbstractService
assertNotNull, buildBatchOrderBy, buildBatchParams, buildBatchWhere, buildBatchWhereFromFilter, close, createSqlReplacementTokens, getJdbcTemplate, getParameterService, getSql, getSymmetricDialect, getTablePrefix, getTargetDialect, getTargetPlatform, getTargetPlatform, isCalledFromSymmetricAdminTool, isSet, isStreamClosedByClient, isSymmetricTable, logOnce, maxDate, readAcks, sendAck, setSqlMap, synchronize, toNodeIds, toNodeIds
-
Field Details
-
RECAPTURE_DATA_COMMIT_LIMIT
public static final int RECAPTURE_DATA_COMMIT_LIMIT- See Also:
-
PROGRESS_LOG_UPDATE_DELAY_MS
public static final int PROGRESS_LOG_UPDATE_DELAY_MS- See Also:
-
TIMESTAMP_ISO_JSON_FORMAT
- See Also:
-
isoJsonDateTimeFormatter
-
lastHeartbeatTimestamps
-
-
Constructor Details
-
DataService
-
-
Method Details
-
insertReloadEvent
-
generateTransactionIdFromTimestamp
Helper. Creates an ISO-compliant transaction Id string for specified instant and prefix. -
cancelTableReloadRequest
- Specified by:
cancelTableReloadRequest
in interfaceIDataService
-
deleteTableReloadRequest
-
insertTableReloadRequest
- Specified by:
insertTableReloadRequest
in interfaceIDataService
-
insertTableReloadRequest
- Specified by:
insertTableReloadRequest
in interfaceIDataService
-
getTableReloadRequest
- Specified by:
getTableReloadRequest
in interfaceIDataService
-
getTableReloadRequest
- Specified by:
getTableReloadRequest
in interfaceIDataService
-
getTableReloadRequests
- Specified by:
getTableReloadRequests
in interfaceIDataService
-
getTableReloadRequest
- Specified by:
getTableReloadRequest
in interfaceIDataService
-
getTableReloadRequestToProcess
- Specified by:
getTableReloadRequestToProcess
in interfaceIDataService
-
getTableReloadRequestToProcessByTarget
- Specified by:
getTableReloadRequestToProcessByTarget
in interfaceIDataService
-
getTableReloadRequests
-
getTableReloadStatus
- Specified by:
getTableReloadStatus
in interfaceIDataService
-
getOutgoingTableReloadStatus
- Specified by:
getOutgoingTableReloadStatus
in interfaceIDataService
-
getIncomingTableReloadStatus
- Specified by:
getIncomingTableReloadStatus
in interfaceIDataService
-
getActiveTableReloadStatus
- Specified by:
getActiveTableReloadStatus
in interfaceIDataService
-
getActiveOutgoingTableReloadStatus
- Specified by:
getActiveOutgoingTableReloadStatus
in interfaceIDataService
-
getActiveIncomingTableReloadStatus
- Specified by:
getActiveIncomingTableReloadStatus
in interfaceIDataService
-
getTableReloadStatusByLoadIdAndSourceNodeId
public TableReloadStatus getTableReloadStatusByLoadIdAndSourceNodeId(long loadId, String sourceNodeId) - Specified by:
getTableReloadStatusByLoadIdAndSourceNodeId
in interfaceIDataService
-
getTableReloadStatusByTarget
- Specified by:
getTableReloadStatusByTarget
in interfaceIDataService
-
getTableReloadRequestByLoadId
-
collapseTableReloadRequestsByLoadId
public List<TableReloadRequest> collapseTableReloadRequestsByLoadId(List<TableReloadRequest> requests) -
getTableReloadRequestByLoadIdMap
- Specified by:
getTableReloadRequestByLoadIdMap
in interfaceIDataService
-
updateTableReloadStatusDataLoaded
public TableReloadStatus updateTableReloadStatusDataLoaded(ISqlTransaction transaction, long loadId, String sourceNodeId, long batchId, int batchCount, boolean isBulkLoaded) - Specified by:
updateTableReloadStatusDataLoaded
in interfaceIDataService
-
updateTableReloadStatusFailed
public void updateTableReloadStatusFailed(ISqlTransaction transaction, long loadId, String sourceNodeId, long batchId) - Specified by:
updateTableReloadStatusFailed
in interfaceIDataService
-
updateTableReloadStatusDataCounts
public void updateTableReloadStatusDataCounts(ISqlTransaction transaction, long loadId, String sourceNodeId, long startBatchId, long endBatchId, long dataBatchCount, long rowsCount) -
updateTableReloadRequestsLoadId
public void updateTableReloadRequestsLoadId(ISqlTransaction transaction, long loadId, TableReloadRequest request) -
updateTableReloadStatusTableCount
public void updateTableReloadStatusTableCount(ISqlTransaction transaction, long loadId, String sourceNodeId, int tableCount) -
createTableReloadStatus
public void createTableReloadStatus(ISqlTransaction transaction, long loadId, boolean isFullLoad, String sourceNodeId, String targetNodeId) -
updateTableReloadStatusSetupCount
public void updateTableReloadStatusSetupCount(ISqlTransaction transaction, long loadId, String sourceNodeId, int setupBatchCount) -
updateTableReloadRequestsCancelled
- Specified by:
updateTableReloadRequestsCancelled
in interfaceIDataService
-
updateTableReloadRequestsError
-
insertRequestedOutgoingBatches
protected long insertRequestedOutgoingBatches(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, String overrideInitialLoadSelect, long loadId, String createBy, String channelId, long totalRows, long maxRowsPerBatch, long batchCount) -
insertReloadEvent
public long insertReloadEvent(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, String overrideInitialLoadSelect, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, long estimatedBatchRowCount) - Specified by:
insertReloadEvent
in interfaceIDataService
- Returns:
- If isLoad then return the inserted batch id otherwise return the data id
-
insertReloadEvent
public long insertReloadEvent(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, String overrideInitialLoadSelect, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, String channelId, long estimatedBatchRowCount) - Parameters:
estimatedBatchRowCount
- TODO- Returns:
- If isLoad then return the inserted batch id otherwise return the data id
-
insertReloadEventImmediate
public long insertReloadEventImmediate(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, String overrideInitialLoadSelect, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, String channelId, long estimatedBatchRowCount) -
insertReloadEvent
protected long insertReloadEvent(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, String overrideInitialLoadSelect, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, String channelId, long estimatedBatchRowCount, boolean isImmediate) -
getReloadChannelIdForTrigger
-
insertReloadEvents
public Map<Integer,ExtractRequest> insertReloadEvents(Node targetNode, boolean reverse, List<TableReloadRequest> reloadRequests, ProcessInfo processInfo, List<TriggerRouter> triggerRouters, Map<Integer, ExtractRequest> extractRequests, IReloadGenerator reloadGenerator) - Specified by:
insertReloadEvents
in interfaceIDataService
-
convertReloadListToMap
protected Map<String,TableReloadRequest> convertReloadListToMap(List<TableReloadRequest> reloadRequests, List<TriggerRouter> triggerRouters, boolean isFullLoad, boolean isChannelLoad) -
validate
-
getDataCountForReload
protected long getDataCountForReload(Table table, Node targetNode, String selectSql) throws SqlException - Throws:
SqlException
-
getTransformMultiplier
-
isLocalNodeUsingBulkLoad
-
insertPurgeEvent
protected void insertPurgeEvent(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, boolean isLoad, String overrideDeleteStatement, long loadId, String createBy) -
insertPurgeEvent
protected void insertPurgeEvent(ISqlTransaction transaction, Node targetNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, boolean isLoad, String overrideDeleteStatement, long loadId, String createBy, AbstractBatch.Status outgoingBatchStatus) -
resolveTargetTables
public List<String> resolveTargetTables(String sql, TriggerRouter triggerRouter, TriggerHistory triggerHistory, Node targetNode) -
createPurgeEvent
protected void createPurgeEvent(ISqlTransaction transaction, String sql, Node targetNode, Node sourceNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, boolean isLoad, long loadId, String createBy) -
createPurgeEvent
protected void createPurgeEvent(ISqlTransaction transaction, String sql, Node targetNode, Node sourceNode, TriggerRouter triggerRouter, TriggerHistory triggerHistory, boolean isLoad, long loadId, String createBy, AbstractBatch.Status outgoingBatchStatus) -
insertSqlEvent
public void insertSqlEvent(Node targetNode, String sql, boolean isLoad, long loadId, String createBy) - Specified by:
insertSqlEvent
in interfaceIDataService
-
insertSqlEvent
public void insertSqlEvent(ISqlTransaction transaction, Node targetNode, String sql, boolean isLoad, long loadId, String createBy) - Specified by:
insertSqlEvent
in interfaceIDataService
-
insertSqlEvent
public void insertSqlEvent(ISqlTransaction transaction, Node targetNode, String sql, boolean isLoad, long loadId, String createBy, AbstractBatch.Status outgoingBatchStatus) -
insertSqlEvent
public void insertSqlEvent(ISqlTransaction transaction, TriggerHistory history, String channelId, Node targetNode, String sql, boolean isLoad, long loadId, String createBy) - Specified by:
insertSqlEvent
in interfaceIDataService
-
insertSqlEvent
public void insertSqlEvent(ISqlTransaction transaction, TriggerHistory history, String channelId, Node targetNode, String sql, boolean isLoad, long loadId, String createBy, AbstractBatch.Status outgoingBatchStatus) -
insertScriptEvent
public void insertScriptEvent(String channelId, Node targetNode, String script, boolean isLoad, long loadId, String createBy) - Specified by:
insertScriptEvent
in interfaceIDataService
-
insertScriptEvent
public void insertScriptEvent(ISqlTransaction transaction, String channelId, Node targetNode, String script, boolean isLoad, long loadId, String createBy) - Specified by:
insertScriptEvent
in interfaceIDataService
-
countDataInRange
public int countDataInRange(long firstDataId, long secondDataId) Description copied from interface:IDataService
Count the number of data ids in a range- Specified by:
countDataInRange
in interfaceIDataService
-
countData
public int countData()- Specified by:
countData
in interfaceIDataService
-
insertCreateEvent
public void insertCreateEvent(Node targetNode, TriggerHistory triggerHistory, boolean isLoad, long loadId, String createBy, boolean excludeIndices, boolean excludeForeignKeys, boolean excludeDefaults) - Specified by:
insertCreateEvent
in interfaceIDataService
-
insertCreateEvent
public void insertCreateEvent(Node targetNode, TriggerHistory triggerHistory, String createBy, boolean excludeIndices, boolean excludeForeignKeys, boolean excludeDefaults) - Specified by:
insertCreateEvent
in interfaceIDataService
-
insertCreateEvent
protected void insertCreateEvent(ISqlTransaction transaction, Node targetNode, TriggerHistory triggerHistory, boolean isLoad, long loadId, String createBy, boolean excludeIndices, boolean excludeForeignKeys, boolean excludeDefaults) -
insertCreateEvent
public void insertCreateEvent(ISqlTransaction transaction, Node targetNode, TriggerHistory triggerHistory, String channelId, boolean isLoad, long loadId, String createBy, boolean excludeIndices, boolean excludeForeignKeys, boolean excludeDefaults) - Specified by:
insertCreateEvent
in interfaceIDataService
-
insertCreateEvent
public void insertCreateEvent(ISqlTransaction transaction, Node targetNode, TriggerHistory triggerHistory, String channelId, boolean isLoad, long loadId, String createBy, boolean excludeIndices, boolean excludeForeignKeys, boolean excludeDefaults, AbstractBatch.Status outgoingBatchStatus) -
insertData
- Specified by:
insertData
in interfaceIDataService
-
insertData
- Specified by:
insertData
in interfaceIDataService
-
insertDataEvent
-
insertDataEvent
-
insertDataEvents
- Specified by:
insertDataEvents
in interfaceIDataService
-
insertDataAndDataEventAndOutgoingBatch
public void insertDataAndDataEventAndOutgoingBatch(Data data, String channelId, List<Node> nodes, boolean isLoad, long loadId, String createBy) - Specified by:
insertDataAndDataEventAndOutgoingBatch
in interfaceIDataService
-
insertDataAndDataEventAndOutgoingBatch
public long insertDataAndDataEventAndOutgoingBatch(Data data, String nodeId, boolean isLoad, long loadId, String createBy) - Specified by:
insertDataAndDataEventAndOutgoingBatch
in interfaceIDataService
- Returns:
- The inserted batch id
-
insertDataAndDataEventAndOutgoingBatch
public long insertDataAndDataEventAndOutgoingBatch(ISqlTransaction transaction, Data data, String nodeId, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, String overrideChannelId, long estimatedBatchRowCount) - Parameters:
estimatedBatchRowCount
- TODO- Returns:
- The inserted batch id
-
insertDataAndDataEventAndOutgoingBatch
public long insertDataAndDataEventAndOutgoingBatch(ISqlTransaction transaction, Data data, String nodeId, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, long estimatedBatchRowCount) - Specified by:
insertDataAndDataEventAndOutgoingBatch
in interfaceIDataService
-
insertDataEventAndOutgoingBatch
protected long insertDataEventAndOutgoingBatch(ISqlTransaction transaction, long dataId, String channelId, String nodeId, DataEventType eventType, boolean isLoad, long loadId, String createBy, AbstractBatch.Status status, String tableName, long estimatedBatchRowCount) -
reloadNode
- Specified by:
reloadNode
in interfaceIDataService
-
sendScript
- Specified by:
sendScript
in interfaceIDataService
-
sendSchema
public boolean sendSchema(String nodeId, String catalogName, String schemaName, String tableName, boolean isLoad, boolean excludeIndices, boolean excludeForeignKeys, boolean excludeDefaults) - Specified by:
sendSchema
in interfaceIDataService
-
sendSQL
public String sendSQL(String nodeId, String catalogName, String schemaName, String tableName, String sql) Description copied from interface:IDataService
Sends a SQL command to the remote node for execution by creating a SQL event that is synced like other data- Specified by:
sendSQL
in interfaceIDataService
- Parameters:
nodeId
- the remote node where the SQL statement will be executedcatalogName
- used to find the sym_trigger entry for table that will be associated with this eventschemaName
- used to find the sym_trigger entry for table that will be associated with this eventtableName
- used to find the sym_trigger entry for table that will be associated with this eventsql
- the SQL statement to run on the remote node database- Returns:
- message string indicating success or error
-
sendSQL
- Specified by:
sendSQL
in interfaceIDataService
-
reloadTable
- Specified by:
reloadTable
in interfaceIDataService
-
reloadTable
public String reloadTable(String nodeId, String catalogName, String schemaName, String tableName, String overrideInitialLoadSelect) - Specified by:
reloadTable
in interfaceIDataService
-
reloadTableImmediate
public String reloadTableImmediate(String nodeId, String catalogName, String schemaName, String tableName, String overrideInitialLoadSelect, String overrideChannelId) - Specified by:
reloadTableImmediate
in interfaceIDataService
-
reloadTable
-
reloadMissingForeignKeyRowsReverse
public void reloadMissingForeignKeyRowsReverse(String sourceNodeId, Table table, CsvData data, String channelId, boolean sendCorrectionToPeers) - Specified by:
reloadMissingForeignKeyRowsReverse
in interfaceIDataService
-
reloadMissingForeignKeyRowsForLoad
public void reloadMissingForeignKeyRowsForLoad(String sourceNodeId, long batchId, long rowNumber, Table table, CsvData data, String channelId) - Specified by:
reloadMissingForeignKeyRowsForLoad
in interfaceIDataService
-
sendMissingForeignKeyRowsForLoad
-
reloadMissingForeignKeyRows
- Specified by:
reloadMissingForeignKeyRows
in interfaceIDataService
-
reloadMissingForeignKeyRows
-
sendNewerDataToNode
public void sendNewerDataToNode(ISqlTransaction transaction, String targetNodeId, String tableName, String pkCsvData, Date minCreateTime, String winningNodeId) - Specified by:
sendNewerDataToNode
in interfaceIDataService
-
insertHeartbeatEvent
Because we can't add a trigger on the _node table, we are artificially generating heartbeat events.- Specified by:
insertHeartbeatEvent
in interfaceIDataService
- Parameters:
node
-
-
createData
- Specified by:
createData
in interfaceIDataService
-
createData
- Specified by:
createData
in interfaceIDataService
-
createData
public Data createData(ISqlTransaction transaction, String catalogName, String schemaName, String tableName, String whereClause) - Specified by:
createData
in interfaceIDataService
-
createData
-
getCsvDataFor
protected String getCsvDataFor(ISqlTransaction transaction, Trigger trigger, TriggerHistory triggerHistory, String whereClause, boolean pkOnly) -
countDataGaps
public long countDataGaps()- Specified by:
countDataGaps
in interfaceIDataService
-
findDataGapsUnchecked
- Specified by:
findDataGapsUnchecked
in interfaceIDataService
-
findDataGapsExpired
- Specified by:
findDataGapsExpired
in interfaceIDataService
-
findDataGaps
-
findDataGaps
- Specified by:
findDataGaps
in interfaceIDataService
-
findMaxDataEventDataId
public long findMaxDataEventDataId() -
insertDataGap
- Specified by:
insertDataGap
in interfaceIDataService
-
insertDataGap
- Specified by:
insertDataGap
in interfaceIDataService
-
insertDataGaps
- Specified by:
insertDataGaps
in interfaceIDataService
-
deleteDataGap
- Specified by:
deleteDataGap
in interfaceIDataService
-
deleteDataGap
- Specified by:
deleteDataGap
in interfaceIDataService
-
deleteDataGaps
- Specified by:
deleteDataGaps
in interfaceIDataService
-
deleteAllDataGaps
- Specified by:
deleteAllDataGaps
in interfaceIDataService
-
expireDataGaps
- Specified by:
expireDataGaps
in interfaceIDataService
-
findCreateTimeOfEvent
- Specified by:
findCreateTimeOfEvent
in interfaceIDataService
-
findCreateTimeOfData
- Specified by:
findCreateTimeOfData
in interfaceIDataService
-
findNextCreateTimeOfDataStartingAt
- Specified by:
findNextCreateTimeOfDataStartingAt
in interfaceIDataService
-
getHeartbeatListeners
Get a list ofIHeartbeatListener
s that are ready for a heartbeat according toIHeartbeatListener.getTimeBetweenHeartbeatsInSeconds()
- Parameters:
force
- if true, then return the entire list ofIHeartbeatListener
s
-
updateLastHeartbeatTime
-
heartbeat
public void heartbeat(boolean force) Description copied from interface:IDataService
UpdateNode
information for this node and callIHeartbeatListener
s.- Specified by:
heartbeat
in interfaceIDataService
- See Also:
-
IDataService#heartbeat()
-
listDataIds
- Specified by:
listDataIds
in interfaceIDataService
-
listData
public List<Data> listData(long batchId, String nodeId, long startDataId, String channelId, int maxRowsToRetrieve) - Specified by:
listData
in interfaceIDataService
-
findData
- Specified by:
findData
in interfaceIDataService
-
findData
-
getDataMapper
- Specified by:
getDataMapper
in interfaceIDataService
-
selectDataFor
- Specified by:
selectDataFor
in interfaceIDataService
-
selectDataFor
public ISqlReadCursor<Data> selectDataFor(Long batchId, String targetNodeId, boolean isContainsBigLob) - Specified by:
selectDataFor
in interfaceIDataService
-
selectDataFor
- Specified by:
selectDataFor
in interfaceIDataService
-
getDataSelectByBatchSql
-
getDataSelectSql
-
getDataSelectSql
-
getDataOrderBy
-
findMaxDataId
public long findMaxDataId()- Specified by:
findMaxDataId
in interfaceIDataService
-
findMinDataId
public long findMinDataId()- Specified by:
findMinDataId
in interfaceIDataService
-
deleteCapturedConfigChannelData
public void deleteCapturedConfigChannelData()- Specified by:
deleteCapturedConfigChannelData
in interfaceIDataService
-
getLastDataCaptureByChannel
- Specified by:
getLastDataCaptureByChannel
in interfaceIDataService
-
fixLastDataGap
public boolean fixLastDataGap()- Specified by:
fixLastDataGap
in interfaceIDataService
-
findNodeIdsByNodeGroupId
- Specified by:
findNodeIdsByNodeGroupId
in interfaceIDataService
-
checkInterrupted
- Throws:
InterruptedException
-
resendBatchAsReload
- Specified by:
resendBatchAsReload
in interfaceIDataService
-
resendDataAsReload
public int resendDataAsReload(long minDataId, long maxDataId) - Specified by:
resendDataAsReload
in interfaceIDataService
-
resendDataAsReload
-
convertDataToReload
-
reCaptureData
public int reCaptureData(long minDataId, long maxDataId) Attempts to recapture stale data rows between specified Ids and re-insert them back into sym_data with a new transaction ID. Commits every RECAPTURE_DATA_COMMIT_LIMIT records to avoid locking sym_data from other processes.- Specified by:
reCaptureData
in interfaceIDataService
- Returns:
- number of recaptured data rows
-
reCaptureData
Attempts to recapture stale data rows and re-insert them back into sym_data with a new transaction ID (all records are in one transaction).- Returns:
- number of recaptured data rows
-
fetchRecapturedData
Attempts to recapture expired data row, which is still relevant and assigns a new transaction ID- Returns:
- recaptured data row
-
insertRecapturedData
Inserts recaptured data back into sym_data- Returns:
- number of inserted rows
-
recaptureKeysForData
Looks up values of primary keys for specified data row object -
recaptureWhereFilterForKeys
protected String recaptureWhereFilterForKeys(Table table, TriggerHistory hist, String[] keys, Object[] values) Extracts filter for a where clause for specified values of primary keys -
hasColumnDataIntegrity
-