Skip to content

Commit

Permalink
Merge pull request #119 from azell/master
Browse files Browse the repository at this point in the history
Fix for issue #54: Lifecycle policy scheduler needs to be modified based on activity
  • Loading branch information
jfarcand committed Dec 9, 2011
2 parents b2c695f + c3d20e5 commit 1bf6277
Showing 1 changed file with 9 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ public class DefaultBroadcaster implements Broadcaster {
private POLICY policy = POLICY.FIFO;
private final AtomicLong maxSuspendResource = new AtomicLong(-1);
private final AtomicBoolean requestScoped = new AtomicBoolean(false);
private final AtomicBoolean recentActivity = new AtomicBoolean(false);
private BroadcasterLifeCyclePolicy lifeCyclePolicy = new BroadcasterLifeCyclePolicy.Builder()
.policy(NEVER).build();
private Future<?> currentLifecycleTask;
Expand Down Expand Up @@ -314,6 +315,8 @@ public void setBroadcasterLifeCyclePolicy(final BroadcasterLifeCyclePolicy lifeC
|| lifeCyclePolicy.getLifeCyclePolicy() == IDLE_RESUME
|| lifeCyclePolicy.getLifeCyclePolicy() == IDLE_DESTROY) {

recentActivity.set(false);

int time = lifeCyclePolicy.getTimeout();
if (time == -1) {
throw new IllegalStateException("BroadcasterLifeCyclePolicy time is not set");
Expand All @@ -325,7 +328,10 @@ public void setBroadcasterLifeCyclePolicy(final BroadcasterLifeCyclePolicy lifeC
@Override
public void run() {
try {
if (resources.isEmpty()) {
// Check for activity since the last execution.
if (recentActivity.getAndSet(false)) {
return;
} else if (resources.isEmpty()) {
if (lifeCyclePolicy.getLifeCyclePolicy() == IDLE) {
notifyEmptyListener();
notifyIdleListener();
Expand Down Expand Up @@ -481,6 +487,8 @@ protected void push(Entry entry) {
return;
}

recentActivity.set(true);

String prevMessage = entry.message.toString();
if (!delayedBroadcast.isEmpty()) {
Iterator<Entry> i = delayedBroadcast.iterator();
Expand Down

0 comments on commit 1bf6277

Please sign in to comment.