- Create new EVENT_WRITE event with related message format to log the write operations with in a txn along with data associated.
- Log this event when perform any writes (insert into, insert overwrite, load table, delete, update, merge, truncate) on table/partition.
- If a single MERGE/UPDATE/INSERT/DELETE statement operates on multiple partitions, then need to log one event per partition.
- DbNotificationListener should log this type of event to special metastore table named "MTxnWriteNotificationLog".
- This table should maintain a map of txn ID against list of tables/partitions written by given txn.
- The entry for a given txn should be removed by the cleaner thread that removes the expired events from EventNotificationTable.
Add new EVENT_COMMIT_TXN to log the metadata/data of all tables/partitions modified within the txn.
- This event should read the EVENT_WRITEs from "MTxnWriteNotificationLog" metastore table to consolidate the list of tables/partitions modified within this txn scope.
- Based on the list of tables/partitions modified and table Write ID, need to compute the list of delta files added by this txn.
- Repl dump should read this message and dump the metadata and delta files list.
- Ensure snapshot isolation at target for on-going read txns which shouldn't view the data replicated from committed txn. (Ensured with open and allocate write ID events).