[ https://issues.apache.org/jira/browse/IGNITE-19993?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vladislav Pyatkov updated IGNITE-19993: --------------------------------------- Description: *Motivation* Safe time propagation is based on messages that are sent at a particular interval. A safe-time direct message is less expensive than a command. The prpouse of the algorith is reduce sending command to propage safe time. *Implementation notes* *Send safe time command by the following rule: {code} If (tSend == null) { // Nothing was sent at this lease interval sendSafeTimePropagatingCommand(tCurrent) } else if (tCurrent - stFreq < tSend && tCurrent - stFreq > tSuc) { // An operation was performed in a previous stFreq interval, but it was not a success sendSafeTimePropagatingCommand(tCurrent) if (tSend < tCurrent) sendSafeTimePropagatingMessage(tSend, tCurrent) } else if (tCurrent - stFreq > tSend && tSend != tSuc) { // The last command was unsuccessful sendSafeTimePropagatingCommand(tCurrent) if (tSend < tCurrent) sendSafeTimePropagatingMessage(tSend, tCurrent) } else if (tSend < tCurrent) { // It is not necessary to send a safe time due to the fact that is moving with load sendSafeTimePropagatingMessage(tSend, tCurrent) } {code} * Do not send the safe time command if the private one is not completed yet. *Difinition of done* Safe time propagates through messages in regular load. The safe time command is used only in the specific cases described above. was: *Motivation* Safe time propagation is based on messages that are sent at a particular interval. A safe-time direct message is less expensive than a command. The prpouse of the algorith is reduce sending command to propage safe time. *Implementation notes* Send safe time command by the following rule: {code} If (tSend == null) { // Nothing was sent at this lease interval sendSafeTimePropagatingCommand(tCurrent) } else if (tCurrent - stFreq > tSuc) && (tSuc != tSend) { // No successful operation was performed in the previous safe time interval, and the last one was not successful. sendSafeTimePropagatingCommand(tCurrent) if (tSend < tCurrent) sendSafeTimePropagatingMessage(tSend, tCurrent) } else if (tSend < tCurrent) { // It is not necessary to send a safe time due to the fact that is moving with load sendSafeTimePropagatingMessage(tSend, tCurrent) } {code} *Difinition of done* Safe time propagates through messages in regular load. The safe time command is used only in the specific cases described above. > Reduce sending safe time command > -------------------------------- > > Key: IGNITE-19993 > URL: https://issues.apache.org/jira/browse/IGNITE-19993 > Project: Ignite > Issue Type: Improvement > Reporter: Vladislav Pyatkov > Priority: Major > > *Motivation* > Safe time propagation is based on messages that are sent at a particular > interval. A safe-time direct message is less expensive than a command. The > prpouse of the algorith is reduce sending command to propage safe time. > *Implementation notes* > *Send safe time command by the following rule: > {code} > If (tSend == null) { > // Nothing was sent at this lease interval > sendSafeTimePropagatingCommand(tCurrent) > } else if (tCurrent - stFreq < tSend && tCurrent - stFreq > tSuc) { > // An operation was performed in a previous stFreq interval, but it was not > a success > sendSafeTimePropagatingCommand(tCurrent) > if (tSend < tCurrent) > sendSafeTimePropagatingMessage(tSend, tCurrent) > } else if (tCurrent - stFreq > tSend && tSend != tSuc) { > // The last command was unsuccessful > sendSafeTimePropagatingCommand(tCurrent) > if (tSend < tCurrent) > sendSafeTimePropagatingMessage(tSend, tCurrent) > } else if (tSend < tCurrent) { > // It is not necessary to send a safe time due to the fact that is moving > with load > sendSafeTimePropagatingMessage(tSend, tCurrent) > } > {code} > * Do not send the safe time command if the private one is not completed yet. > *Difinition of done* > Safe time propagates through messages in regular load. The safe time command > is used only in the specific cases described above. -- This message was sent by Atlassian Jira (v8.20.10#820010)