Lines Matching refs:write_group

257 bool WriteThread::LinkGroup(WriteGroup& write_group,  in LinkGroup()  argument
260 Writer* leader = write_group.leader; in LinkGroup()
261 Writer* last_writer = write_group.last_writer; in LinkGroup()
267 w->write_group = nullptr; in LinkGroup()
305 void WriteThread::CompleteLeader(WriteGroup& write_group) { in CompleteLeader() argument
306 assert(write_group.size > 0); in CompleteLeader()
307 Writer* leader = write_group.leader; in CompleteLeader()
308 if (write_group.size == 1) { in CompleteLeader()
309 write_group.leader = nullptr; in CompleteLeader()
310 write_group.last_writer = nullptr; in CompleteLeader()
314 write_group.leader = leader->link_newer; in CompleteLeader()
316 write_group.size -= 1; in CompleteLeader()
320 void WriteThread::CompleteFollower(Writer* w, WriteGroup& write_group) { in CompleteFollower() argument
321 assert(write_group.size > 1); in CompleteFollower()
322 assert(w != write_group.leader); in CompleteFollower()
323 if (w == write_group.last_writer) { in CompleteFollower()
325 write_group.last_writer = w->link_older; in CompleteFollower()
330 write_group.size -= 1; in CompleteFollower()
342 while (w != nullptr && w->write_group == nullptr) { in BeginWriteStall()
408 WriteGroup* write_group) { in EnterAsBatchGroupLeader() argument
411 assert(write_group != nullptr); in EnterAsBatchGroupLeader()
424 leader->write_group = write_group; in EnterAsBatchGroupLeader()
425 write_group->leader = leader; in EnterAsBatchGroupLeader()
426 write_group->last_writer = leader; in EnterAsBatchGroupLeader()
427 write_group->size = 1; in EnterAsBatchGroupLeader()
477 w->write_group = write_group; in EnterAsBatchGroupLeader()
479 write_group->last_writer = w; in EnterAsBatchGroupLeader()
480 write_group->size++; in EnterAsBatchGroupLeader()
487 WriteGroup* write_group) { in EnterAsMemTableWriter() argument
491 assert(write_group != nullptr); in EnterAsMemTableWriter()
504 leader->write_group = write_group; in EnterAsMemTableWriter()
505 write_group->leader = leader; in EnterAsMemTableWriter()
506 write_group->size = 1; in EnterAsMemTableWriter()
534 w->write_group = write_group; in EnterAsMemTableWriter()
536 write_group->size++; in EnterAsMemTableWriter()
540 write_group->last_writer = last_writer; in EnterAsMemTableWriter()
541 write_group->last_sequence = in EnterAsMemTableWriter()
546 WriteGroup& write_group) { in ExitAsMemTableWriter() argument
547 Writer* leader = write_group.leader; in ExitAsMemTableWriter()
548 Writer* last_writer = write_group.last_writer; in ExitAsMemTableWriter()
561 if (!write_group.status.ok()) { in ExitAsMemTableWriter()
562 w->status = write_group.status; in ExitAsMemTableWriter()
577 void WriteThread::LaunchParallelMemTableWriters(WriteGroup* write_group) { in LaunchParallelMemTableWriters() argument
578 assert(write_group != nullptr); in LaunchParallelMemTableWriters()
579 write_group->running.store(write_group->size); in LaunchParallelMemTableWriters()
580 for (auto w : *write_group) { in LaunchParallelMemTableWriters()
589 auto* write_group = w->write_group; in CompleteParallelMemTableWriter() local
591 std::lock_guard<std::mutex> guard(write_group->leader->StateMutex()); in CompleteParallelMemTableWriter()
592 write_group->status = w->status; in CompleteParallelMemTableWriter()
595 if (write_group->running-- > 1) { in CompleteParallelMemTableWriter()
601 w->status = write_group->status; in CompleteParallelMemTableWriter()
606 auto* write_group = w->write_group; in ExitAsBatchGroupFollower() local
609 assert(write_group->status.ok()); in ExitAsBatchGroupFollower()
610 ExitAsBatchGroupLeader(*write_group, write_group->status); in ExitAsBatchGroupFollower()
613 SetState(write_group->leader, STATE_COMPLETED); in ExitAsBatchGroupFollower()
617 void WriteThread::ExitAsBatchGroupLeader(WriteGroup& write_group, in ExitAsBatchGroupLeader() argument
619 Writer* leader = write_group.leader; in ExitAsBatchGroupLeader()
620 Writer* last_writer = write_group.last_writer; in ExitAsBatchGroupLeader()
624 if (status.ok() && !write_group.status.ok()) { in ExitAsBatchGroupLeader()
625 status = write_group.status; in ExitAsBatchGroupLeader()
634 CompleteFollower(w, write_group); in ExitAsBatchGroupLeader()
639 CompleteLeader(write_group); in ExitAsBatchGroupLeader()
662 if (write_group.size > 0) { in ExitAsBatchGroupLeader()
663 if (LinkGroup(write_group, &newest_memtable_writer_)) { in ExitAsBatchGroupLeader()
665 SetState(write_group.leader, STATE_MEMTABLE_WRITER_LEADER); in ExitAsBatchGroupLeader()