| 1153 | } |
| 1154 | |
| 1155 | void Attachment::invalidateReplSet(thread_db* tdbb, bool broadcast) |
| 1156 | { |
| 1157 | if (broadcast) |
| 1158 | { |
| 1159 | // Signal other attachments about the changed state |
| 1160 | if (att_repl_lock->lck_logical == LCK_none) |
| 1161 | LCK_lock(tdbb, att_repl_lock, LCK_EX, LCK_WAIT); |
| 1162 | else |
| 1163 | LCK_convert(tdbb, att_repl_lock, LCK_EX, LCK_WAIT); |
| 1164 | } |
| 1165 | |
| 1166 | if (att_flags & ATT_repl_reset) |
| 1167 | return; |
| 1168 | |
| 1169 | att_flags |= ATT_repl_reset; |
| 1170 | |
| 1171 | if (att_relations) |
| 1172 | { |
| 1173 | for (auto relation : *att_relations) |
| 1174 | { |
| 1175 | if (relation) |
| 1176 | relation->rel_repl_state.invalidate(); |
| 1177 | } |
| 1178 | } |
| 1179 | |
| 1180 | LCK_release(tdbb, att_repl_lock); |
| 1181 | } |
| 1182 | |
| 1183 | int Attachment::blockingAstReplSet(void* ast_object) |
| 1184 | { |
no test coverage detected