Skip to content

Commit

Permalink
Revert "Make sure unmuted actors can't run on two schedulers concurre…
Browse files Browse the repository at this point in the history
…ntly"

This reverts commit dbfbd9a.

Reverting this because it's an incomplete fix and a proper fix will require
larger changes. Will revisit later.
  • Loading branch information
dipinhora committed Jun 26, 2022
1 parent dbfbd9a commit c12c2a5
Showing 1 changed file with 3 additions and 16 deletions.
19 changes: 3 additions & 16 deletions src/libponyrt/sched/scheduler.c
Expand Up @@ -1488,23 +1488,10 @@ bool ponyint_sched_unmute_senders(pony_ctx_t* ctx, pony_actor_t* actor)
{
needs_unmuting = ponyint_actorstack_pop(needs_unmuting, &to_unmute);

// check if the actor has any messages waiting to be processed
// note: this must be done before the actor is unmuted to
// avoid a race condition
bool should_reschedule = !ponyint_messageq_isempty(&to_unmute->q);

// unmute actor
ponyint_unmute_actor(to_unmute);

// only reschedule if the actor had messages waiting to be processed
// before we unnmuted it to ensure it cannot be concurrently
// scheduled on multiple scheduler threads
if(should_reschedule)
{
ponyint_sched_add(ctx, to_unmute);
DTRACE2(ACTOR_SCHEDULED, (uintptr_t)sched, (uintptr_t)to_unmute);
actors_rescheduled++;
}
ponyint_sched_add(ctx, to_unmute);
DTRACE2(ACTOR_SCHEDULED, (uintptr_t)sched, (uintptr_t)to_unmute);
actors_rescheduled++;

ponyint_sched_start_global_unmute(ctx->scheduler->index, to_unmute);
}
Expand Down

0 comments on commit c12c2a5

Please sign in to comment.