| 1829 | } |
| 1830 | |
| 1831 | bool TagPartitionedLogSystem::removeBackupWorker(const BackupWorkerDoneRequest& req) { |
| 1832 | bool removed = false; |
| 1833 | Reference<LogSet> logset = getEpochLogSet(req.backupEpoch); |
| 1834 | if (logset.isValid()) { |
| 1835 | for (auto it = logset->backupWorkers.begin(); it != logset->backupWorkers.end(); it++) { |
| 1836 | if (it->getPtr()->get().interf().id() == req.workerUID) { |
| 1837 | logset->backupWorkers.erase(it); |
| 1838 | removed = true; |
| 1839 | break; |
| 1840 | } |
| 1841 | } |
| 1842 | } |
| 1843 | |
| 1844 | if (removed) { |
| 1845 | oldestBackupEpoch = epoch; |
| 1846 | for (const auto& old : oldLogData) { |
| 1847 | if (old.epoch < oldestBackupEpoch && old.tLogs[0]->backupWorkers.size() > 0) { |
| 1848 | oldestBackupEpoch = old.epoch; |
| 1849 | } |
| 1850 | } |
| 1851 | backupWorkerChanged.trigger(); |
| 1852 | } else { |
| 1853 | removedBackupWorkers.insert(req.workerUID); |
| 1854 | } |
| 1855 | |
| 1856 | TraceEvent("RemoveBackupWorker", dbgid) |
| 1857 | .detail("Removed", removed) |
| 1858 | .detail("BackupEpoch", req.backupEpoch) |
| 1859 | .detail("WorkerID", req.workerUID) |
| 1860 | .detail("OldestBackupEpoch", oldestBackupEpoch); |
| 1861 | return removed; |
| 1862 | } |
| 1863 | |
| 1864 | LogEpoch TagPartitionedLogSystem::getOldestBackupEpoch() const { |
| 1865 | return oldestBackupEpoch; |