spec clarification for ServiceLoader#stream for stream operations after clearing cache

XMLWordPrintable

      The spec (comments) for the stream method does not mention that it throws java.util.ConcurrentModificationException when existing streams of the serviceloader are used after clearing the cache by calling ServiceLoader#reload method.

      Simple test case to check :

      Provider:
      testmodules/p/module/provider/ModuleTest.java
      testmodules/p/module-info.java

      module p{
      requires s;
      provides module.test.ModuleTestService with module.provider.ModuleTest;
      }

      Service:
      testmodules/s/module/test/ModuleTestService.java
      testmodules/s/module/test/Test.java
      testmodules/s/module-info.java

      module s{
      exports module.test;
      uses module.test.ModuleTestService;
      }

      public class Test{
      public static void main(String[] args){
      new Test().run();
      }

      public void run(){
            ServiceLoader<ModuleTestService> serviceLoader= ServiceLoader.load(ModuleTestService.class);
            Stream<ServiceLoader.Provider<ModuleTestService>> stream = serviceLoader.stream();
            serviceLoader.reload(); //clears cache
            stream.findFirst(); // throws ConcurrentModificationException, worth mentioning in spec as it is mentioned for iterator method's spec
        }
      }

            Assignee:
            Alan Bateman
            Reporter:
            Bharath Nallakaluva (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated:
              Resolved: