bricolages / bricolage

AWS-oriented Data Warehouse Framework
114 stars 20 forks source link

Separate job execution by each execution #126

Closed ragi256 closed 4 years ago

ragi256 commented 4 years ago

https://github.com/bricolages/bricolage/pull/124 の修正を前提としています なのでこちらのPRは#124 マージ後にマージします

今までjobと1対1になっていたjob executionを1対nにし、実行のたびに増えるようにします。 また、それにあわせてJobTaskまわりに改修を加えてjob_execution情報を格納できるようにします。

commit内容

11fac7e で入った・発覚した変更について

bricolageが実行するrubyプロセス内での実質的案キューは@queueであり、その@queue に格納するオブジェクトでjob_executionstate更新やjob/jobnetslock更新を行うようにします。このため、JobTask内部にjob_executionのidやjob_idを格納します。

このため restore_if_existで呼ぶenqueue_job_executions内部でJobTaskを@queueに詰めるため、@queueのサイズが変わるタイミングが既存のFileTaskQueueと異なるようになり、テスト内容も変更しました。

実行しそこないのJobがない(永続化されたQueueがない)時、restore_if_existを実行直後は FileTaskQueue: @queue.size は0(未enqueue、JobNetRunner#enqueue_jobsで詰める) DatabaseTaskQueue: @queue.size はjobnet内部のjob数(つまりenqueue済)