package io.kubernetes.client.extended.workqueue;

import io.kubernetes.client.extended.workqueue.ratelimiter.DefaultControllerRateLimiter;
import io.kubernetes.client.extended.workqueue.ratelimiter.RateLimiter;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/** The default rate limiting queue implementation. */
public class DefaultRateLimitingQueue<T> extends DefaultDelayingQueue<T>
    implements RateLimitingQueue<T> {

  private RateLimiter<T> rateLimiter;

  public DefaultRateLimitingQueue() {
    super(Executors.newSingleThreadExecutor());
  }

  public DefaultRateLimitingQueue(ExecutorService waitingWorker) {
    super(waitingWorker);
    this.rateLimiter = new DefaultControllerRateLimiter<>();
  }

  public DefaultRateLimitingQueue(ExecutorService waitingWorker, RateLimiter<T> rateLimiter) {
    super(waitingWorker);
    this.rateLimiter = rateLimiter;
  }

  @Override
  public int numRequeues(T item) {
    return rateLimiter.numRequeues(item);
  }

  @Override
  public void forget(T item) {
    rateLimiter.forget(item);
  }

  @Override
  public void addRateLimited(T item) {
    super.addAfter(item, rateLimiter.when(item));
  }
}

@@ -537,21 +537,20 @@
 ) %7B%0A    
-super
+this
 (Executo
@@ -648,37 +648,36 @@
 ngWorker) %7B%0A    
-super
+this
 (waitingWorker);
@@ -678,33 +678,9 @@
 rker
-);%0A    this.rateLimiter =
+,
  new
@@ -712,16 +712,17 @@
 iter%3C%3E()
+)
 ;%0A  %7D%0A%0A 

add lacked ratelimiter initialization