WL#2868 Fix backup trigger handling
BACKUP previous set up triggers using DICT. This lead to all kind of trouble. An smaller alternative to using SUMA for backup is to just make BACKUP handle triggers to TUP directly. This way all triggers will be totally local, and error handling is much simpler. --- old impl. Start: Master recives GSN_DEFINE_BACKUP_CONF from all participants Master sends CREATE_TRIG_REQ for all tables to local DICT (dict master) Master sends START_BACKUP_REQ to all paricipants with trigger ids from DICT Master sends ALTER_TRIG_REQ (online) to local DICT Master waits for GCP Master starts distributed scan When scan has finished Master waits for GCP Master sends DROP_TRIGGER to local DICT Master sends STOP_BACKUP_REQ to all participants --- new impl. Start: Master recives GSN_DEFINE_BACKUP_CONF from all participants Master sends START_BACKUP_REQ to all paricipants Participand sends CREATE_TRIG_REQ for all tables to local TUP Master waits for GCP Master starts distributed scan When scan has finished Master waits for GCP Master sends STOP_BACKUP_REQ to all participants Participant sends DROP_TRIGGER to local TUP Changes: All trigger handling is _local_ This implies, that abort (e.g due to node failure) can be _local_ fix testBackup test so that it will run successfully with the (now correct) backup trigger code. storage/ndb/include/kernel/signaldata/BackupImpl.hpp: rework START_BACKUP signals as we no longer need tableId and triggerIds. storage/ndb/src/common/debugger/signaldata/BackupImpl.cpp: START_BACKUP_REQ no longer has tableIds and trigger ids storage/ndb/src/kernel/blocks/backup/Backup.cpp: Use TUP triggers directly. removes ALTER trigger simplifies DROP triggers changes to node failure handling changes in signal order use SlaveData to track slave status. storage/ndb/src/kernel/blocks/backup/Backup.hpp: - remove ALTER_TRIG (now unused) - add signalNo to BackupRecord - add SlaveData - remove dead items from MasterData - update prototype of startBackupReply storage/ndb/src/kernel/blocks/backup/Backup.txt: Update signals for new backup code. storage/ndb/src/kernel/blocks/backup/BackupInit.cpp: remove ALTER_TRIG REF and CONF as we no longer use them. storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp: Add comment about meaning of triggerId Add sender BlockNumber parameter to dropTrigger. storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp: for SUBSCRIPTION triggers, make it so that the trigger ids are private to each block. storage/ndb/test/ndbapi/testBackup.cpp: Don't do initial restart, just a restart. This is to avoid cache issues with schema versions storage/ndb/test/src/NdbBackup.cpp: Update error insertions.
Showing
Please register or sign in to comment