graylog2-server icon indicating copy to clipboard operation
graylog2-server copied to clipboard

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

Open damianharouff opened this issue 8 months ago • 0 comments

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

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

damianharouff avatar Jun 03 '25 20:06 damianharouff