dropwizard: Application start fails due to "java.lang.ClassCastException: io.dropwizard.util.Size cannot be cast to java.util.Optional"

Hi!

Has anyone seen this error already? I am using Dropwizard 1.1.0. It happens while validating some fields (e.g. inputBufferSize field) in io.dropwizard.jetty.HttpConnectorFactory even if I do not specify a server block in my configuration YAML, so the default values are used.

java.lang.ClassCastException: io.dropwizard.util.Size cannot be cast to java.util.Optional
	at org.hibernate.validator.internal.engine.valuehandling.OptionalValueUnwrapper.handleValidatedValue(OptionalValueUnwrapper.java:20)
	at org.hibernate.validator.internal.engine.ValueContext.getCurrentValidatedValue(ValueContext.java:121)
	at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:110)
	at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:87)
	at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:73)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:620)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:583)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForSingleDefaultGroupElement(ValidatorImpl.java:527)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:495)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:460)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:410)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateCascadedConstraint(ValidatorImpl.java:761)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateCascadedConstraints(ValidatorImpl.java:684)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:419)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateCascadedConstraint(ValidatorImpl.java:761)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateCascadedConstraints(ValidatorImpl.java:684)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:419)
	at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:207)
	at io.dropwizard.configuration.BaseConfigurationFactory.validate(BaseConfigurationFactory.java:237)
	at io.dropwizard.configuration.BaseConfigurationFactory.build(BaseConfigurationFactory.java:129)
	at io.dropwizard.configuration.BaseConfigurationFactory.build(BaseConfigurationFactory.java:92)
	at io.dropwizard.cli.ConfiguredCommand.parseConfiguration(ConfiguredCommand.java:124)
	at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:72)
	at io.dropwizard.cli.Cli.run(Cli.java:74)
	at io.dropwizard.Application.run(Application.java:89)

The same also occurs sometimes for io.dropwizard.util.Duration (e.g. idleTimeout field).

Best regards Maksym

About this issue

  • Original URL
  • State: closed
  • Created 7 years ago
  • Comments: 15 (6 by maintainers)

Most upvoted comments

The only workaround that I know is setting the log4j2 log level for Hibernate validator higher than TRACE.

Reported upstream as HV-1352. Dropwizard users can use the provided workarounds until fixed upstream.

I think I found how you can reproduce this! Enable TRACE level logging for org.hibernate.validator, so the line 108 in org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree gets executed and you get those ClassCastExceptions.