You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Cookie is configured with specified micronaut.session.http.cookie-max-age property value.
Actual Behaviour
An exception is thrown with the following stack trace:
java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Seconds
at java.base/java.time.Period.get(Period.java:443)
at io.micronaut.http.cookie.Cookie.maxAge(Cookie.java:259)
at java.base/java.util.Optional.ifPresent(Optional.java:178)
at io.micronaut.http.cookie.Cookie.configure(Cookie.java:239)
at io.micronaut.http.cookie.Cookie.configure(Cookie.java:224)
at com.example.CookieService.createCookie(CookieService.java:21)
at com.example.CookieController.testCookie(CookieController.java:17)
at com.example.$CookieController$Definition$Exec.dispatch(Unknown Source)
at io.micronaut.context.AbstractExecutableMethodsDefinition$DispatchedExecutableMethod.invokeUnsafe(AbstractExecutableMethodsDefinition.java:461)
at io.micronaut.context.DefaultBeanContext$BeanContextUnsafeExecutionHandle.invokeUnsafe(DefaultBeanContext.java:4354)
at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:231)
at io.micronaut.web.router.DefaultUriRouteMatch.execute(DefaultUriRouteMatch.java:38)
at io.micronaut.http.server.RouteExecutor.executeRouteAndConvertBody(RouteExecutor.java:488)
at io.micronaut.http.server.RouteExecutor.callRoute(RouteExecutor.java:478)
at io.micronaut.http.server.RequestLifecycle.callRoute(RequestLifecycle.java:182)
at io.micronaut.http.server.RequestLifecycle.executeRoute(RequestLifecycle.java:170)
at io.micronaut.http.server.RequestLifecycle$2.provideResponse(RequestLifecycle.java:390)
at io.micronaut.http.filter.FilterRunner.provideResponseAndHandleErrors(FilterRunner.java:372)
at io.micronaut.http.filter.FilterRunner.filterRequest(FilterRunner.java:307)
at io.micronaut.http.filter.FilterRunner.lambda$filterRequest$2(FilterRunner.java:280)
at io.micronaut.http.filter.AroundLegacyFilter$FilterChainImpl.proceed(AroundLegacyFilter.java:122)
at io.micronaut.session.http.HttpSessionFilter.doFilter(HttpSessionFilter.java:104)
at io.micronaut.http.filter.HttpServerFilter.doFilter(HttpServerFilter.java:48)
at io.micronaut.http.filter.AroundLegacyFilter.processRequestFilter(AroundLegacyFilter.java:75)
at io.micronaut.http.filter.FilterRunner.filterRequest(FilterRunner.java:276)
at io.micronaut.http.filter.FilterRunner.run(FilterRunner.java:247)
at io.micronaut.http.server.RequestLifecycle.runServerFilters(RequestLifecycle.java:422)
at io.micronaut.http.server.RequestLifecycle.normalFlow(RequestLifecycle.java:160)
at io.micronaut.http.server.netty.NettyRequestLifecycle.handleNormal(NettyRequestLifecycle.java:93)
at io.micronaut.http.server.netty.RoutingInBoundHandler.accept(RoutingInBoundHandler.java:236)
at io.micronaut.http.server.netty.websocket.NettyServerWebSocketUpgradeHandler.accept(NettyServerWebSocketUpgradeHandler.java:156)
at io.micronaut.http.server.netty.handler.PipeliningServerHandler$MessageInboundHandler.read(PipeliningServerHandler.java:394)
at io.micronaut.http.server.netty.handler.PipeliningServerHandler.channelRead(PipeliningServerHandler.java:218)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
at io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.onHttpRequestChannelRead(WebSocketServerExtensionHandler.java:158)
at io.netty.handler.codec.http.websocketx.extensions.WebSocketServerExtensionHandler.channelRead(WebSocketServerExtensionHandler.java:82)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:289)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1357)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:868)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:1583)
For CharSequence -> TemporalAmount conversion periodConverter is always used , durationConverter is overridden by periodConverter in io.micronaut.core.convert.DefaultMutableConversionService#internalConverters map under the same key.
io.micronaut.http.cookie.Cookie#maxAge(java.time.temporal.TemporalAmount) tries to retrieve seconds from java.time.Period and fails.
Expected Behavior
Cookie is configured with specified micronaut.session.http.cookie-max-age property value.
Actual Behaviour
An exception is thrown with the following stack trace:
This happens because of a bug introduced as part of those changes: 898afbf#diff-1d67a0d89faf09974c70d4c4aee5a8deaf2d0c5495f9302c1fa9ada3ab3f0808R171.
For CharSequence -> TemporalAmount conversion
periodConverter
is always used ,durationConverter
is overridden byperiodConverter
inio.micronaut.core.convert.DefaultMutableConversionService#internalConverters
map under the same key.io.micronaut.http.cookie.Cookie#maxAge(java.time.temporal.TemporalAmount)
tries to retrieve seconds fromjava.time.Period
and fails.Steps To Reproduce
Run
mvn clean test
in example application.Environment Information
Example Application
https://github.com/daria-kashperska/cookie-test
Version
4.7.x
The text was updated successfully, but these errors were encountered: