- Fix error where from Config shadowing which would cause LHM to abort on reconnect (Shopify#128)
- Refactored the way options are handled internally. Code is now much clearer to understand
- Removed optional connection_options from
Lhm.setup
andLhm.connection
- Option
reconnect_with_consistent_host
will now be provided withoptions
forLhm.change_table
- Adds ProxySQL comments at the end of query to accommodate for internal tool's requirements
- Fixed error on undefined connection, when calling
Lhm.connection
without callingLhm.setup
first - Changed
Lhm.connection.connection
tolhm.connection.ar_connection
for increased clarity and readability
- Add better logging to the LHM components (Shopify#112)
- Slave lag throttler now supports ActiveRecord > 6.0
- [Dev] Add
Appraisals
to test against multiple version
- Duplicate of 3.4.2 (unfortunate mistake)
- Fixed Chunker's undefined name error (Shopify#110)
- Add better logging to the LHM components (Shopify#108)
- Log or raise on unexpected duplicated entry warnings during INSERT IGNORE (Shopify#100)
- Add lhm-shopify.rb to require lhm
- Add comment and collate copying to rename_column
- Publish to rubygems
- Run migrations inline in local/CI environment
- Add test for tables with composite primary keys.
- Add test for migrating to a composite primary key.
- Tests updated to work on MacOS Catalina
- LHM will now print exceptions to @printer if @printer responds to :exception
- New ThreadsRunning throttler uses MySQL Performance Schema to decide whether to throttle
- Catch even more MySQL errors by default with SqlRetry.
- Ensure that :retriable configuration is correctly passed to all SqlRetry instances.
- Retry
Chunker#upper_id
andoptions[:verifier]
on MySQL failure. - Catch more MySQL errors by default with SqlRetry.
- Add a :verifier key to the options hash, with a default implementation which aborts the LHM if the triggers are removed.
- Tighten dependency on retriable gem and remove workarounds for old version
- Retry
Cleanup::Current
just like we retry all the other DDLs.
- Add ActiveRecord::QueryTimedout exception class to be retried on "Timeout waiting for a response from the last query" message.
- Try to take a higher lock_wait_timeout value than others (Shopify#60)
- Retry on
MySQL::Error::Timeout
(Shopify#57) - Retry 20 times by default (Shopify#58)
- Fix Slave lag throttler database config (Shopify#55)
- Loosen dependency on retriable gem (Shopify#54)
- Overhaul retries for deadlocks, wait timeouts on Chunker, Entangler, and AtomicSwitcher (Shopify#51)
- Cleanup tables between tests (Shopify#48)
- Ensure all table names are less than 64 characters (Shopify#49)
- Unify Entangler and AtomicSwitcher retry interface (Shopify#39)
- Remove scripts replaced by dbdeployer (Shopify#40)
- Rename lhmn_ tables to lhma_ to avoid IBP stalls (Shopify#41)
- Drop support for throttle and stride options. Use
throttler
, instead:
Lhm.change_table :users, throttler: [:time_throttler, {stride: x}] do
end
- #118 - Truncate long trigger names. (@sj26)
- #114 - Update chunker requirements (@bjk-soundcloud)
- #98 - Add slave lag throttler. (@camilo, @jasonhl)
- #92 - Fix check for table requirement before starting a lhm.(@hannestyden)
- #93 - Makes the atomic switcher retry on metadata locks (@camilo)
- #63 - Sets the LHM's session lock wait timeout variables (@camilo)
- #75 - Remove DataMapper and ActiveRecord 2.x support (@camilo)
- #84 - Require index names to be strings or symbols (Thibaut)
- #39 - Adding the ability to rename columns (erikogan)
- #67 - Allow for optional time filter on .cleanup (joelr)
- #48 - Add percentage output for migrations (@arthurnn)
- #60 - Quote table names (@spickermann)
- #59 - Escape table name in select_limit and select_start methods (@stevehodgkiss)
- #57 - Ensure chunking 'where' clause handled separately (@rentalcustard)
- #54 - Chunker handle stride changes (@rentalcustard)
- #52 - Implement ability to control timeout and stride from Throttler (@edmundsalvacion)
- #51 - Ensure Lhm.cleanup removes temporary triggers (@edmundsalvacion)
- #46 - Allow custom throttler (@arthurnn)
- #44 - Conditional migrations (@durran)
- Add Lhm.cleanup method for removing copy tables, thanks @bogdan
- Limit copy table names to 64 characters, thanks @charliesome
- Added DataMapper support, no API changes for current users. Refer to the README for information.
- Documentation updates. Thanks @tiegz and @vinbarnes.
- Add option to specify custom index name
- Add mysql2 compatibility
- Add AtomicSwitcher
- Improve change_column
- closes soundcloud#11 this critical bug could cause data loss. table parser was replaced with an implementation that reads directly from information_schema.
- released to rubygems
- added change_column
- final 1.0 release
- removed spec binaries from gem bins
- added SqlHelper.annotation into the middle of trigger statements. this is for the benefit of the killer script which should not kill trigger statements.
- added --confirm to kill script; fixes to kill script
- moved scripts into bin, renamed, added to gem binaries
- added '-- lhm' to the end of statements for more visibility
- Speedup migrations for tables with large minimum id
- Add a bit yard documentation
- Fix issues with index creation on reserved column names
- Improve error handling
- Add tests for replication
- Rename public API method from
hadron_change_table
tochange_table
- Add tests for ActiveRecord 2.3 and 3.1 compatibility
- Speedup migrations for tables with large ids
- Fix conversion of milliseconds to seconds
- Fix handling of sql errors
- Add helper to create unique index
- Allow index creation on prefix of column
- Quote column names on index creation
- Remove ambiguous method signature
- Documentation fix
- 1.8.7 compatibility
- rewrite.
- Include changelog in gem
- Add Ruby 1.8 compatibility
- Setup travis continuous integration
- Fix record lose issue
- Fix and speed up specs
- Merged Pullrequest #9
- code cleanup
- Merged Pullrequest #8
- Merged Pullrequest #7
- Merged Pullrequest #4
- Merged Pullrequest #1
- Initial Release