-
Notifications
You must be signed in to change notification settings - Fork 14
Refine master-master mode support #42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
As I see, the condition whether to proceed with tuples is verified in two cases:
Lines 162 to 164 in a700bd1
I propose to check the |
I would change my proposal a bit now. I don't see much sense in introducing options here. Let's just lean on Details:
See tarantool/queue#120 (comment). We recently solved quite similar problem in the queue module. |
Notes:
A minimum possible version is |
box.info.ro [1] and box.info.replication[n].lag [2] were introduced in Tarantool 1.7.4. 1. tarantool/tarantool@56462bc 2. tarantool/tarantool@7ed4848 Part of #42
expirationd does not process task by default if a replication is configured for a node. It does not matter the node is master or replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1]: * A task processes for all types of spaces for RW nodes. * A task processes for temporary and local spaces for RO nodes. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process task by default if a replication is configured for a node. It does not matter the node is master or replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes for all types of spaces for RW nodes. * A task processes for temporary and local spaces for RO nodes. An user can still force the processing using `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process task by default if a replication is configured for a node. It does not matter the node is master or replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes for all types of spaces for RW nodes. * A task processes for temporary and local spaces for RO nodes. An user can still force the processing using `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process task by default if a replication is configured for a node. It does not matter the node is master or replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes for all types of spaces for RW nodes. * A task processes for temporary and local spaces for RO nodes. An user can still force the processing using `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process task by default if a replication is configured for a node. It does not matter the node is master or replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for RW nodes. * A task processes on temporary and local spaces for RO nodes. An user can still force the processing using `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process task by default if a replication is configured for a node. It does not matter the node is master or replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for RW nodes. * A task processes on temporary and local spaces for RO nodes. An user can still force the processing using `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process task by default if a replication is configured for a node. It does not matter the node is master or replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for RW nodes. * A task processes on temporary and local spaces for RO nodes. An user can still force the processing using `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for RW nodes. * A task processes on temporary and local spaces for RO nodes. An user can still force the processing using the `force` option. 1. 8000 https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for RW nodes. * A task processes on temporary and local spaces for RO nodes. An user can still force the processing using the `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for a RW node. * A task processes on temporary and local spaces for a RO node. An user can still force the processing using the `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for a RW node. * A task processes on temporary and local spaces for a RO node. An user can still force the processing using the `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for a RW node. * A task processes on temporary and local spaces for a RO node. An user can still force the processing using the `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior beco 10000 mes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for a RW node. * A task processes on temporary and local spaces for a RO node. An user can still force the processing using the `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for a RW node. * A task processes on temporary and local spaces for a RO node. An user can still force the processing using the `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
box.info.ro [1] and box.info.replication[n].lag [2] were introduced in Tarantool 1.7.4. 1. tarantool/tarantool@56462bc 2. tarantool/tarantool@7ed4848 Part of #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for a RW node. * A task processes on temporary and local spaces for a RO node. An user can still force the processing using the `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for a RW node. * A task processes on temporary and local spaces for a RO node. An user can still force the processing using the `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for a RW node. * A task processes on temporary and local spaces for a RO node. An user can still force the processing using the `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
box.info.ro [1] and box.info.replication[n].lag [2] were introduced in Tarantool 1.7.4. 1. tarantool/tarantool@56462bc 2. tarantool/tarantool@7ed4848 Part of #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for a RW node. * A task processes on temporary and local spaces for a RO node. An user can still force the processing using the `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
box.info.ro [1] and box.info.replication[n].lag [2] were introduced in Tarantool 1.7.4. 1. tarantool/tarantool@56462bc 2. tarantool/tarantool@7ed4848 Part of #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for a RW node. * A task processes on temporary and local spaces for a RO node. An user can still force the processing using the `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
box.info.ro [1] and box.info.replication[n].lag [2] were introduced in Tarantool 1.7.4. 1. tarantool/tarantool@56462bc 2. tarantool/tarantool@7ed4848 Part of #42
expirationd does not process a task by default if a replication is configured for a node. It does not matter the node is a master or a replica. The patch improves the behavior. The behavior becomes different for RW and RO nodes [1] by default: * A task processes on all types of spaces for a RW node. * A task processes on temporary and local spaces for a RO node. An user can still force the processing using the `force` option. 1. https://www.tarantool.io/en/doc/latest/reference/configuration/#confval-read_only Closes #42
Overview This release adds a Tarantool Cartridge role for expirationd package and improves the default behavior. Breaking changes None. New features Continue a task from a last tuple (#54). Decrease tarantool-checks dependency from 3.1 to 2.1 (#124). Process a task on a writable space by default (#42). Wait until a space or an index is created (#68, #116). Tarantool Cartridge role (#107). Bugfixes Fix build and installation of rpm/deb packages (#124). Do not restart work fiber if index does not exist (#64). Update changelogs for rpm/deb packages. Testing Shuffle tests (#118). Fix test_mvcc_vinyl_tx_conflict (#104, #105). Fix flaky 'simple expires test' (#90). Other Add GitHub Actions workflow with debug Tarantool build (#102). Add GitHub Actions workflow for deploying module packages to S3 based repositories (#43).
Overview This release adds a Tarantool Cartridge role for expirationd package and improves the default behavior. Breaking changes None. New features Continue a task from a last tuple (#54). Decrease tarantool-checks dependency from 3.1 to 2.1 (#124). Process a task on a writable space by default (#42). Wait until a space or an index is created (#68, #116). Tarantool Cartridge role (#107). Bugfixes Fix build and installation of rpm/deb packages (#124). Do not restart a work fiber if an index does not exist (#64). Update changelogs for rpm/deb packages. Testing Shuffle tests (#118). Fix test_mvcc_vinyl_tx_conflict (#104, #105). Fix flaky 'simple expires test' (#90). Other Add GitHub Actions workflow with debug Tarantool build (#102). Add GitHub Actions workflow for deploying module packages to S3 based repositories (#43).
Overview This release adds a Tarantool Cartridge role for expirationd package and improves the default behavior. Breaking changes None. Deprecated Obsolete functions: task_stats, kill_task, get_task, get_tasks, run_task, show_task_list. New features Continue a task from a last tuple (#54). Decrease tarantool-checks dependency from 3.1 to 2.1 (#124). Process a task on a writable space by default (#42). Wait until a space or an index is created (#68, #116). Tarantool Cartridge role (#107). Bugfixes Fix build and installation of rpm/deb packages (#124). Do not restart a work fiber if an index does not exist (#64). Update changelogs for rpm/deb packages. Testing 67ED Shuffle tests (#118). Fix test_mvcc_vinyl_tx_conflict (#104, #105). Fix flaky 'simple expires test' (#90). Other Add GitHub Actions workflow with debug Tarantool build (#102). Add GitHub Actions workflow for deploying module packages to S3 based repositories (#43).
Overview This release adds a Tarantool Cartridge role for expirationd package and improves the default behavior. Breaking changes None. Deprecated Obsolete functions: task_stats, kill_task, get_task, get_tasks, run_task, show_task_list. New features Continue a task from a last tuple (#54). Decrease tarantool-checks dependency from 3.1 to 2.1 (#124). Process a task on a writable space by default (#42). Wait until a space or an index is created (#68, #116). Tarantool Cartridge role (#107). Bugfixes Fix build and installation of rpm/deb packages (#124). Do not restart a work fiber if an index does not exist (#64). Update changelogs for rpm/deb packages. Testing Shuffle tests (#118). Fix test_mvcc_vinyl_tx_conflict (#104, #105). Fix flaky 'simple expires test' (#90). Other expirationd.start() parameter `space_id` has been renamed to `space` (#112). Add GitHub Actions workflow with debug Tarantool build (#102). Add GitHub Actions workflow for deploying module packages to S3 based repositories (#43).
Overview This release adds a Tarantool Cartridge role for expirationd package and improves the default behavior. Breaking changes None. Deprecated Obsolete functions: task_stats, kill_task, get_task, get_tasks, run_task, show_task_list. New features Continue a task from a last tuple (#54). Decrease tarantool-checks dependency from 3.1 to 2.1 (#124). Process a task on a writable space by default (#42). Wait until a space or an index is created (#68, #116). Tarantool Cartridge role (#107). Bugfixes Fix build and installation of rpm/deb packages (#124). Do not restart a work fiber if an index does not exist (#64). Update changelogs for rpm/deb packages. Testing Shuffle tests (#118). Fix test_mvcc_vinyl_tx_conflict (#104, #105). Fix flaky 'simple expires test' (#90). Other expirationd.start() parameter `space_id` has been renamed to `space` (#112). Add GitHub Actions workflow with debug Tarantool build (#102). Add GitHub Actions workflow for deploying module packages to S3 based repositories (#43).
Initially the module leant on
box.cfg.replication_source
(box.cfg.replication
for tarantool-1.7.6+) to don't start task processing on a replica. Here the wordreplica
means an instance with at least one configured upstream.Then something in the world changes and it becomes usual to use bidirectional replication with tarantool. Most of times it is not a real master-master: all writes are going to a single instance at given moment of the time. But it allows to skip replication reconfiguration step when switching an instance that aimed to process writes. This way decreases a time for the switching and decreases probability of mistakes during replica set reconfiguration.
box.cfg{read_only = true|false}
is often used to protect instances, where writes should not be performed.In this confguration the expirationd module should process tasks only on the writeable instance and so checking of a
box.cfg.replication
is not sufficient. The optionforce
was added with this idea in the mind. It let a user control where to start task processing and where don't. However it obligates an application developer to externally stop tasks processing on an instance that goes to read-only and start it on an instance that goes to be writeable. It is not quite obvious.This ideal solution would be ability to configure expirationd to obtain information about an instance state. Say, 'stop processing when
box.info.ro
becomestrue
and start it when it becomesfalse
'.I propose the following API:
The discussion was started in PR #37 by @filonenko-mikhail, then was stale for a long time. I filed the issue to discuss and finally decide what would be most convenient way to configure the module in a multi-instance environment.
The text was updated successfully, but these errors were encountered: