You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "michael elbaz (Jira)" <ji...@apache.org> on 2020/05/01 09:06:00 UTC

[jira] [Comment Edited] (CAMEL-14982) Endpoint DSL - File never consumed using delay

    [ https://issues.apache.org/jira/browse/CAMEL-14982?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17097254#comment-17097254 ] 

michael elbaz edited comment on CAMEL-14982 at 5/1/20, 9:05 AM:
----------------------------------------------------------------

Thanks for the fix [~davsclaus]

Just one thing i check the code and this look weird for me


{code:java}
 if (delay <= 0) {
            // compute the default delay that are millis to use current time unit
            currentDelay = timeUnit.convert(DEFAULT_DELAY, TimeUnit.MILLISECONDS);
            if (currentDelay <= 0) {
                // delay must be at least 1
                currentDelay = 1;
            }

 if (delay < 0) {
                // compute the default delay that are millis to use current time unit
                long value = timeUnit.convert(DEFAULT_DELAY, TimeUnit.MILLISECONDS);
                if (value <= 0) {
                    // delay must be at least 1
                    value = 1;
}
{code}

How currentDelay or value could be less than 0 in this cases ?



was (Author: michael992):
Thanks for the fix [~davsclaus]

> Endpoint DSL - File never consumed using delay
> ----------------------------------------------
>
>                 Key: CAMEL-14982
>                 URL: https://issues.apache.org/jira/browse/CAMEL-14982
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 3.2.0
>            Reporter: michael elbaz
>            Assignee: Claus Ibsen
>            Priority: Minor
>             Fix For: 3.3.0
>
>
> Is not about *camel-file-watch* but *camel-file* it doesn't appear in components list...
> # When using file component with delay option the files will never be consummated if timeUnit != milliseconds 
> # +Il also see that using delay with string (.delay("2s")) is not accepted anymore i got an exception even if the method still accept string...+
> Some code
> {code:java}
> org.apache.camel.FailedToCreateRouteException: Failed to create route input-directory-route: Route(input-directory-route)[From[file:D:/2411/_data/l... because of Failed to resolve endpoint: file:D:/2411/_data/load/input?delay=2s&move=D%3A%2F2411%2F_data%2Fload%2Fsuccess&moveFailed=D%3A%2F2411%2F_data%2Fload%2Ffailure due to: Error binding property (delay=2s) with name: delay on bean: file:D:/2411/_data/load/input?delay=2s&move=D%3A%2F2411%2F_data%2Fload%2Fsuccess&moveFailed=D%3A%2F2411%2F_data%2Fload%2Ffailure with value: 2s
> 	at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:123) ~[camel-core-engine-3.2.0.jar:3.2.0]
> 	at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:353) ~[camel-core-engine-3.2.0.jar:3.2.0]
> 	at org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:327) ~[camel-core-engine-3.2.0.jar:3.2.0]
> 	at org.apache.camel.impl.engine.AbstractCamelContext.doInit(AbstractCamelContext.java:2598) ~[camel-base-3.2.0.jar:3.2.0]
> 	at org.apache.camel.support.service.BaseService.init(BaseService.java:83) ~[camel-api-3.2.0.jar:3.2.0]
> 	at org.apache.camel.impl.engine.AbstractCamelContext.init(AbstractCamelContext.java:2431) ~[camel-base-3.2.0.jar:3.2.0]
> 	at org.apache.camel.support.service.BaseService.start(BaseService.java:111) ~[camel-api-3.2.0.jar:3.2.0]
> 	at org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2448) ~[camel-base-3.2.0.jar:3.2.0]
> 	at org.apache.camel.spring.SpringCamelContext.start(SpringCamelContext.java:121) ~[camel-spring-3.2.0.jar:3.2.0]
> 	at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:157) ~[camel-spring-3.2.0.jar:3.2.0]
> 	at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
> 	at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
> 	at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
> 	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:403) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
> 	at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:360) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
> 	at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:897) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
> 	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:162) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
> 	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) ~[spring-context-5.2.5.RELEASE.jar:5.2.5.RELEASE]
> 	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
> 	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
> 	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
> 	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
> 	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
> 	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.6.RELEASE.jar:2.2.6.RELEASE]
> 	at fr.aphp.referential.load.LoadMain.main(LoadMain.java:9) ~[classes/:na]
> Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: file:D:/2411/_data/load/input?delay=2s&move=D%3A%2F2411%2F_data%2Fload%2Fsuccess&moveFailed=D%3A%2F2411%2F_data%2Fload%2Ffailure due to: Error binding property (delay=2s) with name: delay on bean: file:D:/2411/_data/load/input?delay=2s&move=D%3A%2F2411%2F_data%2Fload%2Fsuccess&moveFailed=D%3A%2F2411%2F_data%2Fload%2Ffailure with value: 2s
> 	at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:971) ~[camel-base-3.2.0.jar:3.2.0]
> 	at org.apache.camel.impl.engine.AbstractCamelContext.getEndpoint(AbstractCamelContext.java:893) ~[camel-base-3.2.0.jar:3.2.0]
> 	at org.apache.camel.builder.endpoint.AbstractEndpointBuilder.resolve(AbstractEndpointBuilder.java:55) ~[camel-endpointdsl-3.2.0.jar:3.2.0]
> 	at org.apache.camel.reifier.RouteReifier.doCreateRoute(RouteReifier.java:257) ~[camel-core-engine-3.2.0.jar:3.2.0]
> 	at org.apache.camel.reifier.RouteReifier.createRoute(RouteReifier.java:117) ~[camel-core-engine-3.2.0.jar:3.2.0]
> 	... 24 common frames omitted
> Caused by: org.apache.camel.PropertyBindingException: Error binding property (delay=2s) with name: delay on bean: file:D:/2411/_data/load/input?delay=2s&move=D%3A%2F2411%2F_data%2Fload%2Fsuccess&moveFailed=D%3A%2F2411%2F_data%2Fload%2Ffailure with value: 2s
> 	at org.apache.camel.support.PropertyBindingSupport.doBindProperties(PropertyBindingSupport.java:555) ~[camel-support-3.2.0.jar:3.2.0]
> 	at org.apache.camel.support.PropertyBindingSupport.access$000(PropertyBindingSupport.java:71) ~[camel-support-3.2.0.jar:3.2.0]
> 	at org.apache.camel.support.PropertyBindingSupport$Builder.bind(PropertyBindingSupport.java:255) ~[camel-support-3.2.0.jar:3.2.0]
> 	at org.apache.camel.support.DefaultEndpoint.setProperties(DefaultEndpoint.java:433) ~[camel-support-3.2.0.jar:3.2.0]
> 	at org.apache.camel.support.DefaultEndpoint.configureProperties(DefaultEndpoint.java:401) ~[camel-support-3.2.0.jar:3.2.0]
> 	at org.apache.camel.support.ScheduledPollEndpoint.configureProperties(ScheduledPollEndpoint.java:111) ~[camel-support-3.2.0.jar:3.2.0]
> 	at org.apache.camel.support.DefaultComponent.setProperties(DefaultComponent.java:449) ~[camel-support-3.2.0.jar:3.2.0]
> 	at org.apache.camel.component.file.GenericFileComponent.createEndpoint(GenericFileComponent.java:68) ~[camel-file-3.2.0.jar:3.2.0]
> 	at org.apache.camel.component.file.GenericFileComponent.createEndpoint(GenericFileComponent.java:38) ~[camel-file-3.2.0.jar:3.2.0]
> 	at org.apache.camel.support.DefaultComponent.createEndpoint(DefaultComponent.java:148) ~[camel-support-3.2.0.jar:3.2.0]
> 	at org.apache.camel.impl.engine.AbstractCamelContext.doGetEndpoint(AbstractCamelContext.java:952) ~[camel-base-3.2.0.jar:3.2.0]
> 	... 28 common frames omitted
> Caused by: org.apache.camel.TypeConversionException: Error during type conversion from type: java.lang.String to the required type: long with value 2s due to org.apache.camel.TypeConversionException: Error during type conversion from type: java.lang.String to the required type: java.lang.Long with value 2s due to java.lang.NumberFormatException: For input string: "2s"
> 	at org.apache.camel.impl.converter.CoreTypeConverterRegistry.createTypeConversionException(CoreTypeConverterRegistry.java:563) ~[camel-base-3.2.0.jar:3.2.0]
> 	at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:251) ~[camel-base-3.2.0.jar:3.2.0]
> 	at org.apache.camel.impl.converter.CoreTypeConverterRegistry.convertTo(CoreTypeConverterRegistry.java:164) ~[camel-base-3.2.0.jar:3.2.0]
> 	at org.apache.camel.impl.converter.CoreTypeConverterRegistry.convertTo(CoreTypeConverterRegistry.java:119) ~[camel-base-3.2.0.jar:3.2.0]
> 	at org.apache.camel.support.component.PropertyConfigurerSupport.property(PropertyConfigurerSupport.java:73) ~[camel-support-3.2.0.jar:3.2.0]
> 	at org.apache.camel.component.file.FileEndpointConfigurer.configure(FileEndpointConfigurer.java:52) ~[camel-file-3.2.0.jar:3.2.0]
> 	at org.apache.camel.support.PropertyBindingSupport.doBindProperties(PropertyBindingSupport.java:550) ~[camel-support-3.2.0.jar:3.2.0]
> 	... 38 common frames omitted
> Caused by: org.apache.camel.TypeConversionException: Error during type conversion from type: java.lang.String to the required type: java.lang.Long with value 2s due to java.lang.NumberFormatException: For input string: "2s"
> 	at org.apache.camel.support.SimpleTypeConverter.convertTo(SimpleTypeConverter.java:103) ~[camel-support-3.2.0.jar:3.2.0]
> 	at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:360) ~[camel-base-3.2.0.jar:3.2.0]
> 	at org.apache.camel.impl.converter.CoreTypeConverterRegistry.doConvertTo(CoreTypeConverterRegistry.java:234) ~[camel-base-3.2.0.jar:3.2.0]
> 	... 43 common frames omitted
> Caused by: java.lang.NumberFormatException: For input string: "2s"
> 	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:na]
> 	at java.base/java.lang.Long.parseLong(Long.java:692) ~[na:na]
> 	at java.base/java.lang.Long.valueOf(Long.java:1144) ~[na:na]
> 	at org.apache.camel.converter.ObjectConverter.toLong(ObjectConverter.java:177) ~[camel-base-3.2.0.jar:3.2.0]
> 	at org.apache.camel.converter.ObjectConverterLoader.lambda$registerConverters$17(ObjectConverterLoader.java:63) ~[camel-base-3.2.0.jar:3.2.0]
> 	at org.apache.camel.support.SimpleTypeConverter.convertTo(SimpleTypeConverter.java:99) ~[camel-support-3.2.0.jar:3.2.0]
> 	... 45 common frames omitted
> {code}
> {code:java}
>   @Override
>   public void configure() throws Exception {
>         from(fileEndpoint("myDir"))
>                 // route...
>         ;
>     }
>    private EndpointConsumerBuilder fileEndpoint(String directory) {
>         return file(directory)
>                 .delay(2)
>                 .timeUnit(TimeUnit.SECONDS);
>     }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)