Graylog2 / Graylog2/graylog2-server

Token Management: Values beyond 1000 years accepted but show "invalid date"

Open
#22,787 0 comments 0 reactions 0 assignees View on GitHub
bug triaged
Dominant language
Java
Stars
8.1k
Forks
1.1k
Avg merge
1d 20h
Merged PRs (30d)
217

Description

In Token Management, values beyond 1000 years are accepted by the front end and apparently accepted by the back end, but result in "Invalid Date":

![Image](https://github.com/user-attachments/assets/5a810ff4-18bf-4d92-913a-12069d9a5b51)

MDB shows odd values for expires_at:

```
{
_id: ObjectId('683f539cadb47365561754c4'),
last_access: ISODate('1970-01-01T00:00:00.000Z'),
expires_at: ISODate('3025-06-03T19:57:16.161Z'),
created_at: ISODate('2025-06-03T19:57:16.161Z'),
token_type: 1,
token: 'redacted',
username: 'graylog-forwarder',
NAME: 'malarkey2'
},
{
_id: ObjectId('683f53a2adb47365561754c8'),
last_access: ISODate('1970-01-01T00:00:00.000Z'),
expires_at: ISODate('+012025-06-03T19:57:22.312Z'),
created_at: ISODate('2025-06-03T19:57:22.312Z'),
token_type: 1,
token: 'redacted',
username: 'graylog-forwarder',
NAME: 'malarkey3'
},
{
_id: ObjectId('683f53a9adb47365561754cc'),
last_access: ISODate('1970-01-01T00:00:00.000Z'),
expires_at: ISODate('+102025-06-03T19:57:29.041Z'),
created_at: ISODate('2025-06-03T19:57:29.041Z'),
token_type: 1,
token: 'redacted',
username: 'graylog-forwarder',
NAME: 'malarkey4'
}
```

Even larger values are still accepted by the front end but rejected by the back end:

```
2025-06-03T12:55:45.668-07:00 ERROR [ServerRuntime$Responder] An exception has been thrown from an exception mapper class org.graylog2.shared.rest.exceptionmappers.JsonMappingExceptionMapper.
java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.core.JsonLocation.getLineNr()" because the return value of "com.fasterxml.jackson.databind.JsonMappingException.getLocation()" is null
at org.graylog2.shared.rest.exceptionmappers.JsonMappingExceptionMapper.errorWithJsonPath(JsonMappingExceptionMapper.java:75) ~[graylog.jar:?]
at org.graylog2.shared.rest.exceptionmappers.JsonMappingExceptionMapper.toResponse(JsonMappingExceptionMapper.java:43) ~[graylog.jar:?]
at org.graylog2.shared.rest.exceptionmappers.JsonMappingExceptionMapper.toResponse(JsonMappingExceptionMapper.java:37) ~[graylog.jar:?]
at org.glassfish.jersey.server.ServerRuntime$Responder.processExceptionWithMapper(ServerRuntime.java:606) [graylog.jar:?]
at org.glassfish.jersey.server.ServerRuntime$Responder.mapException(ServerRuntime.java:571) [graylog.jar:?]
at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:447) [graylog.jar:?]
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:282) [graylog.jar:?]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) [graylog.jar:?]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) [graylog.jar:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:292) [graylog.jar:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:274) [graylog.jar:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:244) [graylog.jar:?]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) [graylog.jar:?]
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) [graylog.jar:?]
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) [graylog.jar:?]
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:367) [graylog.jar:?]
at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:190) [graylog.jar:?]
at com.codahale.metrics.InstrumentedExecutorService$InstrumentedRunnable.run(InstrumentedExecutorService.java:259) [graylog.jar:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
at java.base/java.lang.Thread.run(Unknown Source) [?:?]
2025-06-03T12:55:45.670-07:00 ERROR [ServerRuntime$Responder] An exception was not mapped due to exception mapper failure. The HTTP 500 response will be returned.
com.fasterxml.jackson.databind.JsonMappingException: Text cannot be parsed to a Period (through reference chain: org.graylog2.rest.resources.users.UsersResource$GenerateTokenTTL["token_ttl"])
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:401) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:360) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.wrapAndThrow(BeanDeserializerBase.java:1964) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:587) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:447) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1497) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:348) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:2102) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1249) ~[graylog.jar:?]
at com.fasterxml.jackson.jakarta.rs.base.ProviderBase.readFrom(ProviderBase.java:784) ~[graylog.jar:?]
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:236) ~[graylog.jar:?]
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:215) ~[graylog.jar:?]
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:135) ~[graylog.jar:?]
at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundReadFrom(MappableExceptionWrapperInterceptor.java:49) ~[graylog.jar:?]
at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:135) ~[graylog.jar:?]
at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1072) ~[graylog.jar:?]
at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:657) ~[graylog.jar:?]
at org.glassfish.jersey.server.ContainerRequest.readEntity(ContainerRequest.java:290) ~[graylog.jar:?]
at org.glassfish.jersey.server.internal.inject.EntityParamValueParamProvider$EntityValueSupplier.apply(EntityParamValueParamProvider.java:73) ~[graylog.jar:?]
at org.glassfish.jersey.server.internal.inject.EntityParamValueParamProvider$EntityValueSupplier.apply(EntityParamValueParamProvider.java:56) ~[graylog.jar:?]
at org.glassfish.jersey.server.spi.internal.ParamValueFactoryWithSource.apply(ParamValueFactoryWithSource.java:50) ~[graylog.jar:?]
at org.glassfish.jersey.server.spi.internal.ParameterValueHelper.getParameterValues(ParameterValueHelper.java:68) ~[graylog.jar:?]
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$AbstractMethodParamInvoker.getParamValues(JavaResourceMethodDispatcherProvider.java:109) ~[graylog.jar:?]
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) ~[graylog.jar:?]
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) ~[graylog.jar:?]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) ~[graylog.jar:?]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) ~[graylog.jar:?]
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) ~[graylog.jar:?]
at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) [graylog.jar:?]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) [graylog.jar:?]
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) [graylog.jar:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:292) [graylog.jar:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:274) [graylog.jar:?]
at org.glassfish.jersey.internal.Errors.process(Errors.java:244) [graylog.jar:?]
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) [graylog.jar:?]
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) [graylog.jar:?]
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) [graylog.jar:?]
at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:367) [graylog.jar:?]
at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:190) [graylog.jar:?]
at com.codahale.metrics.InstrumentedExecutorService$InstrumentedRunnable.run(InstrumentedExecutorService.java:259) [graylog.jar:?]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
at java.base/java.lang.Thread.run(Unknown Source) [?:?]
Caused by: java.time.format.DateTimeParseException: Text cannot be parsed to a Period
at java.base/java.time.Period.parse(Unknown Source) ~[?:?]
at org.threeten.extra.PeriodDuration.parse(PeriodDuration.java:292) ~[graylog.jar:?]
at org.graylog2.jackson.PeriodDurationDeserializer.deserialize(PeriodDurationDeserializer.java:37) ~[graylog.jar:?]
at org.graylog2.jackson.PeriodDurationDeserializer.deserialize(PeriodDurationDeserializer.java:28) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.std.ReferenceTypeDeserializer.deserialize(ReferenceTypeDeserializer.java:207) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:543) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:585) ~[graylog.jar:?]
... 41 more
Caused by: java.lang.NumberFormatException: Error at index 10 in: "1000000000000"
at java.base/java.lang.NumberFormatException.forCharSequence(Unknown Source) ~[?:?]
at java.base/java.lang.Integer.parseInt(Unknown Source) ~[?:?]
at java.base/java.time.Period.parseNumber(Unknown Source) ~[?:?]
at java.base/java.time.Period.parse(Unknown Source) ~[?:?]
at org.threeten.extra.PeriodDuration.parse(PeriodDuration.java:292) ~[graylog.jar:?]
at org.graylog2.jackson.PeriodDurationDeserializer.deserialize(PeriodDurationDeserializer.java:37) ~[graylog.jar:?]
at org.graylog2.jackson.PeriodDurationDeserializer.deserialize(PeriodDurationDeserializer.java:28) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.std.ReferenceTypeDeserializer.deserialize(ReferenceTypeDeserializer.java:207) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:543) ~[graylog.jar:?]
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:585) ~[graylog.jar:?]
... 41 more
```

* Graylog Version: 6.3.0-beta.4
* Java Version: embedded
* OpenSearch Version: Data Node 6.3.0-beta.4
* MongoDB Version: 8.0.3
* Operating System: Debian 12
* Browser version: Arc Version 1.97.0 (63507) - Chromium Engine Version 137.0.7151.56

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.