Skip to content

Out of IncrementingUuidGenerator capacity #2925

@tester12345132

Description

@tester12345132

👓 What did you see?

  • It looks like IncrementingUuidGenerator cannot close/reuse sessionId´s if testcases have a short execution time
  • CucumberException: Out of IncrementingUuidGenerator capacity. Please reuse existing instances or use another UuidGenerator implementation instead.
Stacktrace: 
Exception in thread "main" java.util.ServiceConfigurationError: io.cucumber.core.eventbus.UuidGenerator: Provider io.cucumber.core.eventbus.IncrementingUuidGenerator could not be instantiated
	at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:582)
	at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:804)
	at java.base/java.util.ServiceLoader$ProviderImpl.get(ServiceLoader.java:722)
	at java.base/java.util.ServiceLoader$3.next(ServiceLoader.java:1395)
	at io.cucumber.core.runtime.UuidGeneratorServiceLoader.loadSingleUuidGeneratorOrDefault(UuidGeneratorServiceLoader.java:60)
	at io.cucumber.core.runtime.UuidGeneratorServiceLoader.loadUuidGenerator(UuidGeneratorServiceLoader.java:46)
	at io.cucumber.core.runtime.Runtime$Builder.build(Runtime.java:180)
	at io.cucumber.core.cli.Main.run(Main.java:85)
	at ta.TestRunner.main(TestRunner.java:59)
Caused by: io.cucumber.core.exception.CucumberException: Out of IncrementingUuidGenerator capacity. Please reuse existing instances or use another UuidGenerator implementation instead.
	at io.cucumber.core.eventbus.IncrementingUuidGenerator.<init>(IncrementingUuidGenerator.java:102)
	at jdk.internal.reflect.GeneratedConstructorAccessor87.newInstance(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at java.base/java.util.ServiceLoader$ProviderImpl.newInstance(ServiceLoader.java:780)
	... 7 more

✅ What did you expect to see?

I would expect, that some other UUidGenerator would be used, if MAX_SESSION_ID from IncrementingUuidGenerator is out of capacity or the existing instances are reused

📦 Which tool/library version are you using?

io.cucumber, cucumber-junit, v7.19.0
org.seleniumhq.selenium, selenium-java, v.4.17.0

🔬 How could we reproduce it?

Not sure about steps to reproduce, any calls against an api should do the trick

📚 Any additional context?

  • Workaround: Use io.cucumber, cucumber-junit v7.11.2 (last version before changes on UUID generator mentioned below)
  • Found this issue: [Core] Add faster UUID generator selectable through SPI #2703 merged in 04/2023
  • Some testcases have > 100 Steps
  • Some testcases are very quick < 200 ms
  • Nearly no break in between test executions
  • Before the Exception there are two big AND fast testcases (111 Steps - 0,354s and 52 Steps - 0,229s)
  • Steps and times in log

Executions.txt

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions