ExecutorService and AtomicInteger : RejectedExecutionException












0















I want atomicInteger to have a value of 100 then the program terminates



 public static void main(String args) throws InterruptedException {
ExecutorService executor = Executors.newSingleThreadExecutor();
AtomicInteger atomicInteger = new AtomicInteger(0);
do {
executor.submit(() -> {
System.out.println(atomicInteger.getAndAdd(10));
if (atomicInteger.get() == 100) {
//executor.shutdownNown();
}
});
} while (true);
}


I have error



Exception in thread "main" java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@1d8d10a rejected from java.util.concurrent.ThreadPoolExecutor@9e54c2[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 10]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1374)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
at java.util.concurrent.Executors$DelegatedExecutorService.submit(Executors.java:678)


How should I implement it.










share|improve this question

























  • You should probably fix executor.shutdownNown(); first

    – Jacob G.
    Nov 14 '18 at 1:18











  • If I remove it, how do I stop it?

    – Touya Akira
    Nov 14 '18 at 1:30
















0















I want atomicInteger to have a value of 100 then the program terminates



 public static void main(String args) throws InterruptedException {
ExecutorService executor = Executors.newSingleThreadExecutor();
AtomicInteger atomicInteger = new AtomicInteger(0);
do {
executor.submit(() -> {
System.out.println(atomicInteger.getAndAdd(10));
if (atomicInteger.get() == 100) {
//executor.shutdownNown();
}
});
} while (true);
}


I have error



Exception in thread "main" java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@1d8d10a rejected from java.util.concurrent.ThreadPoolExecutor@9e54c2[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 10]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1374)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
at java.util.concurrent.Executors$DelegatedExecutorService.submit(Executors.java:678)


How should I implement it.










share|improve this question

























  • You should probably fix executor.shutdownNown(); first

    – Jacob G.
    Nov 14 '18 at 1:18











  • If I remove it, how do I stop it?

    – Touya Akira
    Nov 14 '18 at 1:30














0












0








0


1






I want atomicInteger to have a value of 100 then the program terminates



 public static void main(String args) throws InterruptedException {
ExecutorService executor = Executors.newSingleThreadExecutor();
AtomicInteger atomicInteger = new AtomicInteger(0);
do {
executor.submit(() -> {
System.out.println(atomicInteger.getAndAdd(10));
if (atomicInteger.get() == 100) {
//executor.shutdownNown();
}
});
} while (true);
}


I have error



Exception in thread "main" java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@1d8d10a rejected from java.util.concurrent.ThreadPoolExecutor@9e54c2[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 10]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1374)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
at java.util.concurrent.Executors$DelegatedExecutorService.submit(Executors.java:678)


How should I implement it.










share|improve this question
















I want atomicInteger to have a value of 100 then the program terminates



 public static void main(String args) throws InterruptedException {
ExecutorService executor = Executors.newSingleThreadExecutor();
AtomicInteger atomicInteger = new AtomicInteger(0);
do {
executor.submit(() -> {
System.out.println(atomicInteger.getAndAdd(10));
if (atomicInteger.get() == 100) {
//executor.shutdownNown();
}
});
} while (true);
}


I have error



Exception in thread "main" java.util.concurrent.RejectedExecutionException: Task java.util.concurrent.FutureTask@1d8d10a rejected from java.util.concurrent.ThreadPoolExecutor@9e54c2[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 10]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2063)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:830)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1374)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112)
at java.util.concurrent.Executors$DelegatedExecutorService.submit(Executors.java:678)


How should I implement it.







java executorservice atomicinteger






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 14 '18 at 1:35







Touya Akira

















asked Nov 14 '18 at 1:10









Touya AkiraTouya Akira

84




84













  • You should probably fix executor.shutdownNown(); first

    – Jacob G.
    Nov 14 '18 at 1:18











  • If I remove it, how do I stop it?

    – Touya Akira
    Nov 14 '18 at 1:30



















  • You should probably fix executor.shutdownNown(); first

    – Jacob G.
    Nov 14 '18 at 1:18











  • If I remove it, how do I stop it?

    – Touya Akira
    Nov 14 '18 at 1:30

















You should probably fix executor.shutdownNown(); first

– Jacob G.
Nov 14 '18 at 1:18





You should probably fix executor.shutdownNown(); first

– Jacob G.
Nov 14 '18 at 1:18













If I remove it, how do I stop it?

– Touya Akira
Nov 14 '18 at 1:30





If I remove it, how do I stop it?

– Touya Akira
Nov 14 '18 at 1:30












2 Answers
2






active

oldest

votes


















0














There is no need to use AtomicInteger here, since your Runnable lambda function invocations are guaranteed to execute sequentially (by new SingleThreadExecutor). Also, your Runnable lambda code were to take any time to execute (e.g. 2ms), your main loop will queue up far more than 10 tasks needed to hit your limit. You can see this happen if you add a 2ms sleep inside your Runnable lambda function, and also add a counter to your do/while loop, and print the value of the counter out at the end to see how many instances Runnables you queued up.



Assuming that you wish to test this code with concurrent threads, you would need to replace the call to newSingleThreadPool with newFixedThreadPool. The approach your code takes is problematic when concurrent threads are being used. In the following code, I've switched to newFixedThreadPool, added a counter, so we can see how many tasks are queued, and added to short pauses in your Runnable lambda function, just to represent a small amount of work. When I execute this program, atomicInteger became greater than 13000 and the program crashed with java.lang.OutOfMemoryError: GC overhead limit exceeded That is because, your runnable function always adds 10 to atomicInteger regardless of it's current value. And also, the code queues up more tasks than it needs. Here's the code with these small changes that illustrate the problem.



public static void main(String args) {
ExecutorService executor = Executors.newFixedThreadPool(3);
AtomicInteger atomicInteger = new AtomicInteger(0);
int i=0;
do {
executor.submit(() -> {
pause(2); // simulates some small amount of work.
System.out.println("atomicInt="+atomicInteger.getAndAdd(10));
pause(2); // simulates some small amount of work.
if (atomicInteger.get() == 100) {
System.out.println("executor.shutdownNow()");
System.out.flush();
executor.shutdownNow();
}
});
if (atomicInteger.get() == 100) {
break;
}
} while (true);
System.out.println("final atomicInt="+atomicInteger.get());
System.out.println("final tasks queued="+i);
}
public static void pause(long millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException ex) {
}
}


Here is a version that fixes the concurrency problems and moves the executor management out of the worker threads where it doesn't really belong:



private static int LIMIT = 100;
private static int INCREMENT = 10;

public static void main(String args) {
ExecutorService executor = Executors.newFixedThreadPool(2);
AtomicInteger atomicInteger = new AtomicInteger(0);
for (int i=0; i < LIMIT/INCREMENT; i++) {
executor.submit(() -> {
pause(2);
System.out.println("atomicInt=" + atomicInteger.getAndAdd(INCREMENT));
System.out.flush();
pause(2);
});
}
executor.shutdown();
while (!executor.isTerminated()) {
System.out.println("Executor not yet terminated");
System.out.flush();
pause(4);
}
System.out.println("final atomicInt=" + atomicInteger.get());
}

public static void pause(long millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException ex) {

}
}





share|improve this answer

































    0














    You should just change your while loop to check for the condition that you needed and shutdown the executor after that






    share|improve this answer























      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53291764%2fexecutorservice-and-atomicinteger-rejectedexecutionexception%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      0














      There is no need to use AtomicInteger here, since your Runnable lambda function invocations are guaranteed to execute sequentially (by new SingleThreadExecutor). Also, your Runnable lambda code were to take any time to execute (e.g. 2ms), your main loop will queue up far more than 10 tasks needed to hit your limit. You can see this happen if you add a 2ms sleep inside your Runnable lambda function, and also add a counter to your do/while loop, and print the value of the counter out at the end to see how many instances Runnables you queued up.



      Assuming that you wish to test this code with concurrent threads, you would need to replace the call to newSingleThreadPool with newFixedThreadPool. The approach your code takes is problematic when concurrent threads are being used. In the following code, I've switched to newFixedThreadPool, added a counter, so we can see how many tasks are queued, and added to short pauses in your Runnable lambda function, just to represent a small amount of work. When I execute this program, atomicInteger became greater than 13000 and the program crashed with java.lang.OutOfMemoryError: GC overhead limit exceeded That is because, your runnable function always adds 10 to atomicInteger regardless of it's current value. And also, the code queues up more tasks than it needs. Here's the code with these small changes that illustrate the problem.



      public static void main(String args) {
      ExecutorService executor = Executors.newFixedThreadPool(3);
      AtomicInteger atomicInteger = new AtomicInteger(0);
      int i=0;
      do {
      executor.submit(() -> {
      pause(2); // simulates some small amount of work.
      System.out.println("atomicInt="+atomicInteger.getAndAdd(10));
      pause(2); // simulates some small amount of work.
      if (atomicInteger.get() == 100) {
      System.out.println("executor.shutdownNow()");
      System.out.flush();
      executor.shutdownNow();
      }
      });
      if (atomicInteger.get() == 100) {
      break;
      }
      } while (true);
      System.out.println("final atomicInt="+atomicInteger.get());
      System.out.println("final tasks queued="+i);
      }
      public static void pause(long millis) {
      try {
      Thread.sleep(millis);
      } catch (InterruptedException ex) {
      }
      }


      Here is a version that fixes the concurrency problems and moves the executor management out of the worker threads where it doesn't really belong:



      private static int LIMIT = 100;
      private static int INCREMENT = 10;

      public static void main(String args) {
      ExecutorService executor = Executors.newFixedThreadPool(2);
      AtomicInteger atomicInteger = new AtomicInteger(0);
      for (int i=0; i < LIMIT/INCREMENT; i++) {
      executor.submit(() -> {
      pause(2);
      System.out.println("atomicInt=" + atomicInteger.getAndAdd(INCREMENT));
      System.out.flush();
      pause(2);
      });
      }
      executor.shutdown();
      while (!executor.isTerminated()) {
      System.out.println("Executor not yet terminated");
      System.out.flush();
      pause(4);
      }
      System.out.println("final atomicInt=" + atomicInteger.get());
      }

      public static void pause(long millis) {
      try {
      Thread.sleep(millis);
      } catch (InterruptedException ex) {

      }
      }





      share|improve this answer






























        0














        There is no need to use AtomicInteger here, since your Runnable lambda function invocations are guaranteed to execute sequentially (by new SingleThreadExecutor). Also, your Runnable lambda code were to take any time to execute (e.g. 2ms), your main loop will queue up far more than 10 tasks needed to hit your limit. You can see this happen if you add a 2ms sleep inside your Runnable lambda function, and also add a counter to your do/while loop, and print the value of the counter out at the end to see how many instances Runnables you queued up.



        Assuming that you wish to test this code with concurrent threads, you would need to replace the call to newSingleThreadPool with newFixedThreadPool. The approach your code takes is problematic when concurrent threads are being used. In the following code, I've switched to newFixedThreadPool, added a counter, so we can see how many tasks are queued, and added to short pauses in your Runnable lambda function, just to represent a small amount of work. When I execute this program, atomicInteger became greater than 13000 and the program crashed with java.lang.OutOfMemoryError: GC overhead limit exceeded That is because, your runnable function always adds 10 to atomicInteger regardless of it's current value. And also, the code queues up more tasks than it needs. Here's the code with these small changes that illustrate the problem.



        public static void main(String args) {
        ExecutorService executor = Executors.newFixedThreadPool(3);
        AtomicInteger atomicInteger = new AtomicInteger(0);
        int i=0;
        do {
        executor.submit(() -> {
        pause(2); // simulates some small amount of work.
        System.out.println("atomicInt="+atomicInteger.getAndAdd(10));
        pause(2); // simulates some small amount of work.
        if (atomicInteger.get() == 100) {
        System.out.println("executor.shutdownNow()");
        System.out.flush();
        executor.shutdownNow();
        }
        });
        if (atomicInteger.get() == 100) {
        break;
        }
        } while (true);
        System.out.println("final atomicInt="+atomicInteger.get());
        System.out.println("final tasks queued="+i);
        }
        public static void pause(long millis) {
        try {
        Thread.sleep(millis);
        } catch (InterruptedException ex) {
        }
        }


        Here is a version that fixes the concurrency problems and moves the executor management out of the worker threads where it doesn't really belong:



        private static int LIMIT = 100;
        private static int INCREMENT = 10;

        public static void main(String args) {
        ExecutorService executor = Executors.newFixedThreadPool(2);
        AtomicInteger atomicInteger = new AtomicInteger(0);
        for (int i=0; i < LIMIT/INCREMENT; i++) {
        executor.submit(() -> {
        pause(2);
        System.out.println("atomicInt=" + atomicInteger.getAndAdd(INCREMENT));
        System.out.flush();
        pause(2);
        });
        }
        executor.shutdown();
        while (!executor.isTerminated()) {
        System.out.println("Executor not yet terminated");
        System.out.flush();
        pause(4);
        }
        System.out.println("final atomicInt=" + atomicInteger.get());
        }

        public static void pause(long millis) {
        try {
        Thread.sleep(millis);
        } catch (InterruptedException ex) {

        }
        }





        share|improve this answer




























          0












          0








          0







          There is no need to use AtomicInteger here, since your Runnable lambda function invocations are guaranteed to execute sequentially (by new SingleThreadExecutor). Also, your Runnable lambda code were to take any time to execute (e.g. 2ms), your main loop will queue up far more than 10 tasks needed to hit your limit. You can see this happen if you add a 2ms sleep inside your Runnable lambda function, and also add a counter to your do/while loop, and print the value of the counter out at the end to see how many instances Runnables you queued up.



          Assuming that you wish to test this code with concurrent threads, you would need to replace the call to newSingleThreadPool with newFixedThreadPool. The approach your code takes is problematic when concurrent threads are being used. In the following code, I've switched to newFixedThreadPool, added a counter, so we can see how many tasks are queued, and added to short pauses in your Runnable lambda function, just to represent a small amount of work. When I execute this program, atomicInteger became greater than 13000 and the program crashed with java.lang.OutOfMemoryError: GC overhead limit exceeded That is because, your runnable function always adds 10 to atomicInteger regardless of it's current value. And also, the code queues up more tasks than it needs. Here's the code with these small changes that illustrate the problem.



          public static void main(String args) {
          ExecutorService executor = Executors.newFixedThreadPool(3);
          AtomicInteger atomicInteger = new AtomicInteger(0);
          int i=0;
          do {
          executor.submit(() -> {
          pause(2); // simulates some small amount of work.
          System.out.println("atomicInt="+atomicInteger.getAndAdd(10));
          pause(2); // simulates some small amount of work.
          if (atomicInteger.get() == 100) {
          System.out.println("executor.shutdownNow()");
          System.out.flush();
          executor.shutdownNow();
          }
          });
          if (atomicInteger.get() == 100) {
          break;
          }
          } while (true);
          System.out.println("final atomicInt="+atomicInteger.get());
          System.out.println("final tasks queued="+i);
          }
          public static void pause(long millis) {
          try {
          Thread.sleep(millis);
          } catch (InterruptedException ex) {
          }
          }


          Here is a version that fixes the concurrency problems and moves the executor management out of the worker threads where it doesn't really belong:



          private static int LIMIT = 100;
          private static int INCREMENT = 10;

          public static void main(String args) {
          ExecutorService executor = Executors.newFixedThreadPool(2);
          AtomicInteger atomicInteger = new AtomicInteger(0);
          for (int i=0; i < LIMIT/INCREMENT; i++) {
          executor.submit(() -> {
          pause(2);
          System.out.println("atomicInt=" + atomicInteger.getAndAdd(INCREMENT));
          System.out.flush();
          pause(2);
          });
          }
          executor.shutdown();
          while (!executor.isTerminated()) {
          System.out.println("Executor not yet terminated");
          System.out.flush();
          pause(4);
          }
          System.out.println("final atomicInt=" + atomicInteger.get());
          }

          public static void pause(long millis) {
          try {
          Thread.sleep(millis);
          } catch (InterruptedException ex) {

          }
          }





          share|improve this answer















          There is no need to use AtomicInteger here, since your Runnable lambda function invocations are guaranteed to execute sequentially (by new SingleThreadExecutor). Also, your Runnable lambda code were to take any time to execute (e.g. 2ms), your main loop will queue up far more than 10 tasks needed to hit your limit. You can see this happen if you add a 2ms sleep inside your Runnable lambda function, and also add a counter to your do/while loop, and print the value of the counter out at the end to see how many instances Runnables you queued up.



          Assuming that you wish to test this code with concurrent threads, you would need to replace the call to newSingleThreadPool with newFixedThreadPool. The approach your code takes is problematic when concurrent threads are being used. In the following code, I've switched to newFixedThreadPool, added a counter, so we can see how many tasks are queued, and added to short pauses in your Runnable lambda function, just to represent a small amount of work. When I execute this program, atomicInteger became greater than 13000 and the program crashed with java.lang.OutOfMemoryError: GC overhead limit exceeded That is because, your runnable function always adds 10 to atomicInteger regardless of it's current value. And also, the code queues up more tasks than it needs. Here's the code with these small changes that illustrate the problem.



          public static void main(String args) {
          ExecutorService executor = Executors.newFixedThreadPool(3);
          AtomicInteger atomicInteger = new AtomicInteger(0);
          int i=0;
          do {
          executor.submit(() -> {
          pause(2); // simulates some small amount of work.
          System.out.println("atomicInt="+atomicInteger.getAndAdd(10));
          pause(2); // simulates some small amount of work.
          if (atomicInteger.get() == 100) {
          System.out.println("executor.shutdownNow()");
          System.out.flush();
          executor.shutdownNow();
          }
          });
          if (atomicInteger.get() == 100) {
          break;
          }
          } while (true);
          System.out.println("final atomicInt="+atomicInteger.get());
          System.out.println("final tasks queued="+i);
          }
          public static void pause(long millis) {
          try {
          Thread.sleep(millis);
          } catch (InterruptedException ex) {
          }
          }


          Here is a version that fixes the concurrency problems and moves the executor management out of the worker threads where it doesn't really belong:



          private static int LIMIT = 100;
          private static int INCREMENT = 10;

          public static void main(String args) {
          ExecutorService executor = Executors.newFixedThreadPool(2);
          AtomicInteger atomicInteger = new AtomicInteger(0);
          for (int i=0; i < LIMIT/INCREMENT; i++) {
          executor.submit(() -> {
          pause(2);
          System.out.println("atomicInt=" + atomicInteger.getAndAdd(INCREMENT));
          System.out.flush();
          pause(2);
          });
          }
          executor.shutdown();
          while (!executor.isTerminated()) {
          System.out.println("Executor not yet terminated");
          System.out.flush();
          pause(4);
          }
          System.out.println("final atomicInt=" + atomicInteger.get());
          }

          public static void pause(long millis) {
          try {
          Thread.sleep(millis);
          } catch (InterruptedException ex) {

          }
          }






          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 15 '18 at 2:15

























          answered Nov 15 '18 at 1:35









          Tom DrakeTom Drake

          43738




          43738

























              0














              You should just change your while loop to check for the condition that you needed and shutdown the executor after that






              share|improve this answer




























                0














                You should just change your while loop to check for the condition that you needed and shutdown the executor after that






                share|improve this answer


























                  0












                  0








                  0







                  You should just change your while loop to check for the condition that you needed and shutdown the executor after that






                  share|improve this answer













                  You should just change your while loop to check for the condition that you needed and shutdown the executor after that







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 14 '18 at 1:40









                  tanyehzhengtanyehzheng

                  1,65811532




                  1,65811532






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53291764%2fexecutorservice-and-atomicinteger-rejectedexecutionexception%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Florida Star v. B. J. F.

                      Error while running script in elastic search , gateway timeout

                      Adding quotations to stringified JSON object values