Skip to content

Instantly share code, notes, and snippets.

@nnc
Created September 13, 2018 13:29
Show Gist options
  • Select an option

  • Save nnc/746488a73e0e75e2580a7581a7a226c3 to your computer and use it in GitHub Desktop.

Select an option

Save nnc/746488a73e0e75e2580a7581a7a226c3 to your computer and use it in GitHub Desktop.
ActiveRecord association rollback bug when anything after first associated record fails to save
$ ruby rails_association_rollback_bug.rb
Fetching https://github.com/rails/rails.git
Fetching gem metadata from https://rubygems.org/........
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...
Using concurrent-ruby 1.0.5
Using minitest 5.11.3
Using thread_safe 0.3.6
Using bundler 1.15.4
Using sqlite3 1.3.13
Using i18n 1.1.0
Using tzinfo 1.2.5
Using activesupport 6.0.0.alpha from https://github.com/rails/rails.git (at master@823f9e0)
Using activemodel 6.0.0.alpha from https://github.com/rails/rails.git (at master@823f9e0)
Using activerecord 6.0.0.alpha from https://github.com/rails/rails.git (at master@823f9e0)
-- create_table(:questions, {:force=>:cascade})
D, [2018-09-13T15:28:22.754966 #39266] DEBUG -- : (1.1ms) SELECT sqlite_version(*)
D, [2018-09-13T15:28:22.755603 #39266] DEBUG -- : (0.1ms) DROP TABLE IF EXISTS "questions"
D, [2018-09-13T15:28:22.756251 #39266] DEBUG -- : (0.3ms) CREATE TABLE "questions" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "state" varchar DEFAULT 'new' NOT NULL)
-> 0.0045s
-- create_table(:answers, {:force=>:cascade})
D, [2018-09-13T15:28:22.756633 #39266] DEBUG -- : (0.0ms) DROP TABLE IF EXISTS "answers"
D, [2018-09-13T15:28:22.756997 #39266] DEBUG -- : (0.1ms) CREATE TABLE "answers" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "question_id" integer, "text" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, CONSTRAINT "fk_rails_3d5ed4418f"
FOREIGN KEY ("question_id")
REFERENCES "questions" ("id")
)
D, [2018-09-13T15:28:22.757463 #39266] DEBUG -- : (0.1ms) CREATE INDEX "index_answers_on_question_id" ON "answers" ("question_id")
-> 0.0011s
D, [2018-09-13T15:28:22.788548 #39266] DEBUG -- : (0.3ms) CREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
D, [2018-09-13T15:28:22.798011 #39266] DEBUG -- : ActiveRecord::InternalMetadata Load (0.1ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
D, [2018-09-13T15:28:22.803921 #39266] DEBUG -- : (0.1ms) begin transaction
D, [2018-09-13T15:28:22.804299 #39266] DEBUG -- : ActiveRecord::InternalMetadata Create (0.1ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["key", "environment"], ["value", "default_env"], ["created_at", "2018-09-13 13:28:22.803097"], ["updated_at", "2018-09-13 13:28:22.803097"]]
D, [2018-09-13T15:28:22.804501 #39266] DEBUG -- : (0.0ms) commit transaction
Run options: --seed 29202
# Running:
D, [2018-09-13T15:28:22.826051 #39266] DEBUG -- : (0.2ms) begin transaction
D, [2018-09-13T15:28:22.826898 #39266] DEBUG -- : ↳ rails_association_rollback_bug.rb:59:in `test_association_rollback_clears_rollbacked_records'
D, [2018-09-13T15:28:22.827490 #39266] DEBUG -- : Question Create (0.3ms) INSERT INTO "questions" DEFAULT VALUES
D, [2018-09-13T15:28:22.828320 #39266] DEBUG -- : ↳ rails_association_rollback_bug.rb:59:in `test_association_rollback_clears_rollbacked_records'
D, [2018-09-13T15:28:22.828729 #39266] DEBUG -- : (0.1ms) commit transaction
D, [2018-09-13T15:28:22.829072 #39266] DEBUG -- : ↳ rails_association_rollback_bug.rb:59:in `test_association_rollback_clears_rollbacked_records'
===== Creating answer for: ''
D, [2018-09-13T15:28:22.835844 #39266] DEBUG -- : (0.1ms) begin transaction
D, [2018-09-13T15:28:22.836337 #39266] DEBUG -- : ↳ rails_association_rollback_bug.rb:65:in `block (2 levels) in test_association_rollback_clears_rollbacked_records'
D, [2018-09-13T15:28:22.857060 #39266] DEBUG -- : (0.2ms) rollback transaction
D, [2018-09-13T15:28:22.857682 #39266] DEBUG -- : ↳ rails_association_rollback_bug.rb:62:in `test_association_rollback_clears_rollbacked_records'
===== Rescued error: #<ActiveRecord::RecordInvalid: Validation failed: Text can't be blank>
D, [2018-09-13T15:28:22.859980 #39266] DEBUG -- : Answer Load (0.2ms) SELECT "answers".* FROM "answers" WHERE "answers"."question_id" = ? LIMIT ? [["question_id", 1], ["LIMIT", 11]]
D, [2018-09-13T15:28:22.860397 #39266] DEBUG -- : ↳ rails_association_rollback_bug.rb:72:in `rescue in test_association_rollback_clears_rollbacked_records'
===== Current answers: #<ActiveRecord::Associations::CollectionProxy []>
D, [2018-09-13T15:28:22.861432 #39266] DEBUG -- : (0.1ms) begin transaction
D, [2018-09-13T15:28:22.861879 #39266] DEBUG -- : ↳ rails_association_rollback_bug.rb:74:in `rescue in test_association_rollback_clears_rollbacked_records'
D, [2018-09-13T15:28:22.862117 #39266] DEBUG -- : Question Update (0.1ms) UPDATE "questions" SET "state" = ? WHERE "questions"."id" = ? [["state", "error"], ["id", 1]]
D, [2018-09-13T15:28:22.862500 #39266] DEBUG -- : ↳ rails_association_rollback_bug.rb:74:in `rescue in test_association_rollback_clears_rollbacked_records'
D, [2018-09-13T15:28:22.862716 #39266] DEBUG -- : (0.0ms) commit transaction
D, [2018-09-13T15:28:22.862982 #39266] DEBUG -- : ↳ rails_association_rollback_bug.rb:74:in `rescue in test_association_rollback_clears_rollbacked_records'
D, [2018-09-13T15:28:22.863723 #39266] DEBUG -- : Question Load (0.1ms) SELECT "questions".* FROM "questions" WHERE "questions"."id" = ? LIMIT ? [["id", 1], ["LIMIT", 1]]
D, [2018-09-13T15:28:22.864031 #39266] DEBUG -- : ↳ rails_association_rollback_bug.rb:77:in `test_association_rollback_clears_rollbacked_records'
.
Finished in 0.043933s, 22.7619 runs/s, 22.7619 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
$ ruby rails_association_rollback_bug.rb
Fetching https://github.com/rails/rails.git
Fetching gem metadata from https://rubygems.org/........
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...
Using concurrent-ruby 1.0.5
Using minitest 5.11.3
Using thread_safe 0.3.6
Using bundler 1.15.4
Using sqlite3 1.3.13
Using i18n 1.1.0
Using tzinfo 1.2.5
Using activesupport 6.0.0.alpha from https://github.com/rails/rails.git (at master@823f9e0)
Using activemodel 6.0.0.alpha from https://github.com/rails/rails.git (at master@823f9e0)
Using activerecord 6.0.0.alpha from https://github.com/rails/rails.git (at master@823f9e0)
-- create_table(:questions, {:force=>:cascade})
D, [2018-09-13T15:26:14.380206 #39185] DEBUG -- : (1.1ms) SELECT sqlite_version(*)
D, [2018-09-13T15:26:14.380957 #39185] DEBUG -- : (0.1ms) DROP TABLE IF EXISTS "questions"
D, [2018-09-13T15:26:14.381602 #39185] DEBUG -- : (0.3ms) CREATE TABLE "questions" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "state" varchar DEFAULT 'new' NOT NULL)
-> 0.0046s
-- create_table(:answers, {:force=>:cascade})
D, [2018-09-13T15:26:14.382059 #39185] DEBUG -- : (0.1ms) DROP TABLE IF EXISTS "answers"
D, [2018-09-13T15:26:14.382392 #39185] DEBUG -- : (0.1ms) CREATE TABLE "answers" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "question_id" integer, "text" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, CONSTRAINT "fk_rails_3d5ed4418f"
FOREIGN KEY ("question_id")
REFERENCES "questions" ("id")
)
D, [2018-09-13T15:26:14.382840 #39185] DEBUG -- : (0.1ms) CREATE INDEX "index_answers_on_question_id" ON "answers" ("question_id")
-> 0.0012s
D, [2018-09-13T15:26:14.416304 #39185] DEBUG -- : (0.2ms) CREATE TABLE "ar_internal_metadata" ("key" varchar NOT NULL PRIMARY KEY, "value" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
D, [2018-09-13T15:26:14.426620 #39185] DEBUG -- : ActiveRecord::InternalMetadata Load (0.3ms) SELECT "ar_internal_metadata".* FROM "ar_internal_metadata" WHERE "ar_internal_metadata"."key" = ? LIMIT ? [["key", "environment"], ["LIMIT", 1]]
D, [2018-09-13T15:26:14.433823 #39185] DEBUG -- : (0.1ms) begin transaction
D, [2018-09-13T15:26:14.434220 #39185] DEBUG -- : ActiveRecord::InternalMetadata Create (0.2ms) INSERT INTO "ar_internal_metadata" ("key", "value", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["key", "environment"], ["value", "default_env"], ["created_at", "2018-09-13 13:26:14.433334"], ["updated_at", "2018-09-13 13:26:14.433334"]]
D, [2018-09-13T15:26:14.434422 #39185] DEBUG -- : (0.0ms) commit transaction
Run options: --seed 1456
# Running:
D, [2018-09-13T15:26:14.461269 #39185] DEBUG -- : (0.1ms) begin transaction
D, [2018-09-13T15:26:14.461953 #39185] DEBUG -- : ↳ rails_association_rollback_bug.rb:59:in `test_association_rollback_clears_rollbacked_records'
D, [2018-09-13T15:26:14.462226 #39185] DEBUG -- : Question Create (0.1ms) INSERT INTO "questions" DEFAULT VALUES
D, [2018-09-13T15:26:14.462939 #39185] DEBUG -- : ↳ rails_association_rollback_bug.rb:59:in `test_association_rollback_clears_rollbacked_records'
D, [2018-09-13T15:26:14.463574 #39185] DEBUG -- : (0.1ms) commit transaction
D, [2018-09-13T15:26:14.463949 #39185] DEBUG -- : ↳ rails_association_rollback_bug.rb:59:in `test_association_rollback_clears_rollbacked_records'
===== Creating answer for: 'A'
D, [2018-09-13T15:26:14.472027 #39185] DEBUG -- : (0.1ms) begin transaction
D, [2018-09-13T15:26:14.472603 #39185] DEBUG -- : ↳ rails_association_rollback_bug.rb:65:in `block (2 levels) in test_association_rollback_clears_rollbacked_records'
D, [2018-09-13T15:26:14.487670 #39185] DEBUG -- : Answer Create (0.3ms) INSERT INTO "answers" ("question_id", "text", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["question_id", 1], ["text", "A"], ["created_at", "2018-09-13 13:26:14.486829"], ["updated_at", "2018-09-13 13:26:14.486829"]]
D, [2018-09-13T15:26:14.488196 #39185] DEBUG -- : ↳ rails_association_rollback_bug.rb:65:in `block (2 levels) in test_association_rollback_clears_rollbacked_records'
===== Creating answer for: ''
D, [2018-09-13T15:26:14.499768 #39185] DEBUG -- : (0.1ms) rollback transaction
D, [2018-09-13T15:26:14.500114 #39185] DEBUG -- : ↳ rails_association_rollback_bug.rb:62:in `test_association_rollback_clears_rollbacked_records'
===== Rescued error: #<ActiveRecord::RecordInvalid: Validation failed: Text can't be blank>
D, [2018-09-13T15:26:14.501573 #39185] DEBUG -- : Answer Load (0.2ms) SELECT "answers".* FROM "answers" WHERE "answers"."question_id" = ? [["question_id", 1]]
D, [2018-09-13T15:26:14.501876 #39185] DEBUG -- : ↳ rails_association_rollback_bug.rb:72:in `rescue in test_association_rollback_clears_rollbacked_records'
===== Current answers: #<ActiveRecord::Associations::CollectionProxy [#<Answer id: nil, question_id: 1, text: "A", created_at: "2018-09-13 13:26:14", updated_at: "2018-09-13 13:26:14">]>
D, [2018-09-13T15:26:14.502957 #39185] DEBUG -- : (0.1ms) begin transaction
D, [2018-09-13T15:26:14.503560 #39185] DEBUG -- : ↳ rails_association_rollback_bug.rb:74:in `rescue in test_association_rollback_clears_rollbacked_records'
D, [2018-09-13T15:26:14.503802 #39185] DEBUG -- : Question Update (0.1ms) UPDATE "questions" SET "state" = ? WHERE "questions"."id" = ? [["state", "error"], ["id", 1]]
D, [2018-09-13T15:26:14.504182 #39185] DEBUG -- : ↳ rails_association_rollback_bug.rb:74:in `rescue in test_association_rollback_clears_rollbacked_records'
D, [2018-09-13T15:26:14.505161 #39185] DEBUG -- : Answer Create (0.4ms) INSERT INTO "answers" DEFAULT VALUES
D, [2018-09-13T15:26:14.505838 #39185] DEBUG -- : ↳ rails_association_rollback_bug.rb:74:in `rescue in test_association_rollback_clears_rollbacked_records'
D, [2018-09-13T15:26:14.505992 #39185] DEBUG -- : (0.1ms) rollback transaction
D, [2018-09-13T15:26:14.506334 #39185] DEBUG -- : ↳ rails_association_rollback_bug.rb:74:in `rescue in test_association_rollback_clears_rollbacked_records'
E
Finished in 0.051685s, 19.3480 runs/s, 0.0000 assertions/s.
1) Error:
AssociationRollbackBugTest#test_association_rollback_clears_rollbacked_records:
ActiveRecord::NotNullViolation: SQLite3::ConstraintException: NOT NULL constraint failed: answers.created_at: INSERT INTO "answers" DEFAULT VALUES
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in `step'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:108:in `block in each'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in `loop'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13/lib/sqlite3/statement.rb:107:in `each'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb:233:in `to_a'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb:233:in `block (2 levels) in exec_query'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb:224:in `block in exec_query'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:601:in `block (2 levels) in log'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:600:in `block in log'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb:591:in `log'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb:223:in `exec_query'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:117:in `exec_insert'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:149:in `insert'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:21:in `insert'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/persistence.rb:184:in `_insert_record'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/persistence.rb:737:in `_create_record'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/counter_cache.rb:163:in `_create_record'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/locking/optimistic.rb:70:in `_create_record'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/attribute_methods/dirty.rb:174:in `_create_record'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/callbacks.rb:332:in `block in _create_record'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:98:in `run_callbacks'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:824:in `_run_create_callbacks'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/callbacks.rb:332:in `_create_record'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/timestamp.rb:101:in `_create_record'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/persistence.rb:710:in `create_or_update'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/callbacks.rb:328:in `block in create_or_update'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:132:in `run_callbacks'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:824:in `_run_save_callbacks'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/callbacks.rb:328:in `create_or_update'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/persistence.rb:279:in `save'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/validations.rb:46:in `save'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:309:in `block in save'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:374:in `block in with_transaction_returning_status'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:252:in `transaction'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:212:in `transaction'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:372:in `with_transaction_returning_status'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:309:in `save'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/suppressor.rb:44:in `save'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/associations/collection_association.rb:381:in `insert_record'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/associations/has_many_association.rb:36:in `insert_record'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/autosave_association.rb:404:in `block in save_collection_association'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/autosave_association.rb:395:in `each'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/autosave_association.rb:395:in `save_collection_association'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/autosave_association.rb:187:in `block in add_autosave_association_callbacks'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/autosave_association.rb:159:in `instance_eval'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/autosave_association.rb:159:in `block in define_non_cyclic_method'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:426:in `block in make_lambda'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:236:in `block in halting_and_conditional'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:515:in `block in invoke_after'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:515:in `each'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:515:in `invoke_after'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:133:in `run_callbacks'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:824:in `_run_update_callbacks'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/callbacks.rb:336:in `_update_record'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/timestamp.rb:113:in `_update_record'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/persistence.rb:710:in `create_or_update'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/callbacks.rb:328:in `block in create_or_update'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:132:in `run_callbacks'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activesupport/lib/active_support/callbacks.rb:824:in `_run_save_callbacks'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/callbacks.rb:328:in `create_or_update'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/persistence.rb:312:in `save!'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/validations.rb:52:in `save!'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:313:in `block in save!'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:374:in `block in with_transaction_returning_status'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:252:in `transaction'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:212:in `transaction'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:372:in `with_transaction_returning_status'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:313:in `save!'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/suppressor.rb:48:in `save!'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/persistence.rb:446:in `block in update!'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:374:in `block in with_transaction_returning_status'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:254:in `block in transaction'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb:288:in `block in within_new_transaction'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/abstract/transaction.rb:285:in `within_new_transaction'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb:254:in `transaction'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:212:in `transaction'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/transactions.rb:372:in `with_transaction_returning_status'
/usr/local/var/rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/bundler/gems/rails-823f9e0a8970/activerecord/lib/active_record/persistence.rb:444:in `update!'
rails_association_rollback_bug.rb:74:in `rescue in test_association_rollback_clears_rollbacked_records'
rails_association_rollback_bug.rb:61:in `test_association_rollback_clears_rollbacked_records'
1 runs, 0 assertions, 0 failures, 1 errors, 0 skips
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment