Skip to content

APITool slows down startup drastically  #1221

@aclowkey

Description

@aclowkey

The API tool is very good and useful for documentation, but is rarely accessed. Yet causes very slow start ups.

With ApiTool:

[2018-07-23 15:09:40,081]-[main] INFO c.z.s.App - [local@netty]: Server started in 34232ms

Without ApiTool:

[2018-07-23 15:10:09,926]-[main] INFO c.z.s.App - [local@netty]: Server started in 2860ms

We looked into running the maven apitool but we can't configure it, and also has some issues.

com.fasterxml.jackson.databind.JsonMappingException: Index: 0, Size: 0 (through reference chain: java.util.ArrayList[5]->org.jooby.apitool.RouteMethod["response"]->org.jooby.apitool.RouteResponse["type"])
	at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:391)
	at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:351)
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapAndThrow(BeanDeserializerBase.java:1711)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:290)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
	at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:136)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286)
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
	at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2985)
	at org.jooby.internal.apitool.BytecodeRouteParser.read(BytecodeRouteParser.java:364)
	at org.jooby.internal.apitool.BytecodeRouteParser.lambdas(BytecodeRouteParser.java:595)
	at org.jooby.internal.apitool.BytecodeRouteParser.parse(BytecodeRouteParser.java:397)
	at org.jooby.apitool.ApiParser.parse(ApiParser.java:295)
	at org.jooby.apitool.ApiParser.parseFully(ApiParser.java:310)
	at org.jooby.internal.apitool.APIProvider.<init>(APIProvider.java:225)
	at org.jooby.internal.apitool.APIProvider$$FastClassByGuice$$9b325895.newInstance(<generated>)
	at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89)
	at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:114)
	at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:91)
	at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:306)
	at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:60)
	at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
	at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:148)
	at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:39)
	at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:211)
	at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:182)
	at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:109)
	at com.google.inject.Guice.createInjector(Guice.java:87)
	at com.google.inject.Guice.createInjector(Guice.java:78)
	at org.jooby.Jooby.lambda$new$0(Jooby.java:885)
	at org.jooby.Jooby.bootstrap(Jooby.java:2996)
	at org.jooby.Jooby.start(Jooby.java:2197)
	at org.jooby.Jooby.start(Jooby.java:2178)
	at org.jooby.Jooby.run(Jooby.java:2107)
	at co.zeekit.server.App.main(App.java:296)
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
	at java.util.ArrayList.rangeCheck(ArrayList.java:657)
	at java.util.ArrayList.get(ArrayList.java:433)
	at org.jooby.internal.apitool.TypeJsonDeserializer.deserialize(TypeJsonDeserializer.java:226)
	at org.jooby.internal.apitool.TypeJsonDeserializer.deserialize(TypeJsonDeserializer.java:217)
	at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:136)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
	... 35 common frames omitted

Process finished with exit code 130 (interrupted by signal 2: SIGINT)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions