equal
deleted
inserted
replaced
132 |
132 |
133 def prepare_database(): Unit = { |
133 def prepare_database(): Unit = { |
134 using_option(open_database()) { db => |
134 using_option(open_database()) { db => |
135 db.transaction { |
135 db.transaction { |
136 for (table <- Data.all_tables) db.create_table(table) |
136 for (table <- Data.all_tables) db.create_table(table) |
|
137 db.lock_tables(Data.all_tables) |
137 Data.clean_build(db) |
138 Data.clean_build(db) |
138 } |
139 } |
139 db.rebuild() |
140 db.rebuild() |
140 } |
141 } |
141 } |
142 } |
751 val serial = if (changed.exists(identity)) State.inc_serial(serial0) else serial0 |
752 val serial = if (changed.exists(identity)) State.inc_serial(serial0) else serial0 |
752 |
753 |
753 stamp_worker(db, worker_uuid, serial) |
754 stamp_worker(db, worker_uuid, serial) |
754 state.set_serial(serial).set_workers(read_workers(db)) |
755 state.set_serial(serial).set_workers(read_workers(db)) |
755 } |
756 } |
|
757 |
|
758 |
|
759 /* transaction_lock */ |
|
760 |
|
761 def transaction_lock[A](db: SQL.Database, body: => A): A = |
|
762 db.transaction { |
|
763 db.lock_tables(Build_Process.Data.all_tables) |
|
764 body |
|
765 } |
756 } |
766 } |
757 } |
767 } |
758 |
768 |
759 |
769 |
760 |
770 |
784 |
794 |
785 protected def synchronized_database[A](body: => A): A = |
795 protected def synchronized_database[A](body: => A): A = |
786 synchronized { |
796 synchronized { |
787 _database match { |
797 _database match { |
788 case None => body |
798 case None => body |
789 case Some(db) => db.transaction { body } |
799 case Some(db) => Build_Process.Data.transaction_lock(db, body) |
790 } |
800 } |
791 } |
801 } |
792 |
802 |
793 private def sync_database(): Unit = |
803 private def sync_database(): Unit = |
794 synchronized_database { |
804 synchronized_database { |