I'm adding a ban check when using token login just to avoid the situation where the user can have a valid token even if they've been issued a ban in the database before the token expired and can still log in. It looks like the display of notice messages during this step no longer works, as there is an exception about trying to start things from the wrong thread.
Add a ban to the bans table: insert into ban (player_id, author_id, reason, level) values (<your user id>, <your user id>, 'Test permanent ban', 'GLOBAL');
Login to test with the client
Log or error message
This is my log file:
This is my log file:
```
2023-12-24T15:40:32.544-05:00 INFO 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-1] c.f.client.game.GamePrefsService : Trying to read preferences file with charset: Big5
2023-12-24T15:40:32.547-05:00 INFO 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-1] c.f.client.game.GamePrefsService : Successfully read preferences file with charset: Big5
2023-12-24T15:40:32.547-05:00 DEBUG 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-1] c.f.client.game.GamePrefsService : game.prefs file already patched to allow multiple instances
2023-12-24T15:40:32.663-05:00 DEBUG 71805 --- [FAF Client] [JavaFX-Launcher] c.f.client.os.FileOpeningHandler : Registering file opening handler: com.faforever.client.os.FileOpeningHandler
2023-12-24T15:40:32.786-05:00 DEBUG 71805 --- [FAF Client] [JavaFX-Launcher] c.f.c.d.DiscordRichPresenceService : Cleared discord rich presence
2023-12-24T15:40:32.788-05:00 DEBUG 71805 --- [FAF Client] [JavaFX-Launcher] c.f.c.d.DiscordRichPresenceService : Cleared discord rich presence
2023-12-24T15:40:32.881-05:00 INFO 71805 --- [FAF Client] [JavaFX-Launcher] c.faforever.client.steam.SteamService : Starting the Steam API
2023-12-24T15:40:32.892-05:00 DEBUG 71805 --- [FAF Client] [JavaFX-Launcher] c.faforever.client.steam.SteamService : Steam API failed to start
2023-12-24T15:40:33.234-05:00 INFO 71805 --- [FAF Client] [JavaFX-Launcher] o.s.boot.SpringApplication : Started application in 5.948 seconds (process running for 6.965)
2023-12-24T15:40:33.239-05:00 INFO 71805 --- [FAF Client] [taskScheduler-1] c.f.client.config.PreferencesConfig : Writing preferences file `%USER_PROFILE%/.faforever/client.prefs`
2023-12-24T15:40:33.239-05:00 DEBUG 71805 --- [FAF Client] [JavaFX-Launcher] c.faforever.client.util.StartupService : Current preferences directory %USER_PROFILE%/.faforever
2023-12-24T15:40:33.553-05:00 INFO 71805 --- [FAF Client] [JavaFX Application Thread] com.faforever.client.update.Version : The current application version is: 2023.12.1
2023-12-24T15:40:34.277-05:00 INFO 71805 --- [FAF Client] [JavaFX Application Thread] c.f.client.update.ClientUpdateService : Current version: 2023.12.1
2023-12-24T15:40:34.287-05:00 INFO 71805 --- [FAF Client] [pool-3-thread-2] c.f.client.update.CheckForUpdateTask : Checking for client update
2023-12-24T15:40:34.848-05:00 TRACE 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-2] com.faforever.client.update.Version : Comparing current version `2023.12.1` to remote version `2023.11.2`
2023-12-24T15:40:34.850-05:00 INFO 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-2] com.faforever.client.update.Version : fromVersion '2023.11.2' is not newer than toVersion '2023.12.1'. No update is required.
2023-12-24T15:40:34.851-05:00 INFO 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-2] com.faforever.client.user.LoginService : Logging in with refresh token
2023-12-24T15:40:34.933-05:00 DEBUG 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-2] c.faforever.client.api.TokenRetriever : Retrieving OAuth token
2023-12-24T15:40:35.845-05:00 INFO 71805 --- [FAF Client] [reactor-http-epoll-2] c.faforever.client.api.TokenRetriever : Token valid until 2023-12-24T21:40:35.842244935Z
2023-12-24T15:40:36.375-05:00 TRACE 71805 --- [FAF Client] [reactor-http-epoll-2] c.faforever.client.api.FafApiAccessor : Retrieved MeResult(userId=166198, userName=Askaholic) from /me with type MeResult
2023-12-24T15:40:36.400-05:00 DEBUG 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Beginning connection process
2023-12-24T15:40:36.406-05:00 DEBUG 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Starting login process
2023-12-24T15:40:36.408-05:00 DEBUG 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Opening connection
2023-12-24T15:40:36.488-05:00 INFO 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Connected to ws.faforever.xyz on port 443
2023-12-24T15:40:36.897-05:00 DEBUG 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Starting session listener
2023-12-24T15:40:36.899-05:00 TRACE 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Sending message of type class com.faforever.commons.lobby.SessionRequest
2023-12-24T15:40:36.963-05:00 TRACE 71805 --- [FAF Client] [single-1] c.f.commons.lobby.FafLobbyClient : Outbound message: {"command":"ask_session","version":"2023.12.1","user_agent":"downlords-faf-client"}
2023-12-24T15:40:37.136-05:00 TRACE 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Inbound message: {"command":"session","session":1867916311}
2023-12-24T15:40:37.207-05:00 TRACE 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Sending message of type class com.faforever.commons.lobby.AuthenticateRequest
2023-12-24T15:40:37.218-05:00 TRACE 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Outbound message: {"command":"auth","token":"**********","session":1867916311,"unique_id":"**********"}
2023-12-24T15:40:37.361-05:00 TRACE 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Inbound message: {"command":"notice","style":"error","text":"You are banned from FAF forever. Reason: Test permanent ban If you would like to appeal this ban, please send an email to: moderation@faforever.com"}
2023-12-24T15:40:37.421-05:00 ERROR 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.client.remote.FafServerAccessor : Error processing notice
java.lang.IllegalStateException: Not on FX application thread; currentThread = reactor-http-epoll-2
at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:294)
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:
Assembly trace from producer [reactor.core.publisher.FluxPeekFuseable] :
reactor.core.publisher.Flux.doOnNext
com.faforever.client.remote.FafServerAccessor.afterPropertiesSet(FafServerAccessor.java:86)
Error has been observed at the following site(s):
*__Flux.doOnNext ⇢ at com.faforever.client.remote.FafServerAccessor.afterPropertiesSet(FafServerAccessor.java:86)
Original Stack Trace:
at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:294)
at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:475)
at javafx.scene.web.WebEngine.checkThread(WebEngine.java:1220)
at javafx.scene.web.WebEngine.(WebEngine.java:852)
at javafx.scene.web.WebEngine.(WebEngine.java:839)
at javafx.scene.web.WebView.(WebView.java:275)
at com.faforever.client.fx2j.theme.ServerNotificationBuilder.build(ServerNotificationBuilder.java:59)
at com.faforever.client.fx2j.theme.ServerNotificationBuilder.build(ServerNotificationBuilder.java:19)
at io.github.sheikah45.fx2j.api.Fx2jLoader.load(Fx2jLoader.java:146)
at com.faforever.client.theme.UiService.loadFxml(UiService.java:75)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:352)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:713)
at com.faforever.client.theme.UiService$$SpringCGLIB$$0.loadFxml()
at com.faforever.client.notification.NotificationService.displayServerNotification(NotificationService.java:118)
at com.faforever.client.notification.NotificationService.addNotification(NotificationService.java:51)
at com.faforever.client.remote.FafServerAccessor.onNotice(FafServerAccessor.java:275)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:196)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)
at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onNext(FluxFilterFuseable.java:118)
at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337)
at reactor.core.publisher.FluxPublish$PublishSubscriber.drain(FluxPublish.java:571)
at reactor.core.publisher.FluxPublish$PublishSubscriber.onNext(FluxPublish.java:310)
at reactor.core.publisher.SinkManyUnicast.drainFused(SinkManyUnicast.java:321)
at reactor.core.publisher.SinkManyUnicast.drain(SinkManyUnicast.java:363)
at reactor.core.publisher.SinkManyUnicast.tryEmitNext(SinkManyUnicast.java:239)
at reactor.core.publisher.SinkManySerialized.tryEmitNext(SinkManySerialized.java:100)
at reactor.core.publisher.InternalManySink.emitNext(InternalManySink.java:27)
at com.faforever.commons.lobby.FafLobbyClient.handle$lambda-45(FafLobbyClient.kt:248)
at reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:137)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onSubscribe(FluxOnErrorResume.java:74)
at reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48)
at reactor.core.publisher.Mono.subscribe(Mono.java:4512)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmit(FluxFlatMap.java:547)
at reactor.core.publisher.FluxFlatMap$FlatMapInner.onNext(FluxFlatMap.java:988)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
at reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:156)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onSubscribe(FluxOnErrorResume.java:74)
at reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48)
at reactor.core.publisher.Mono.subscribe(Mono.java:4512)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210)
at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onNext(FluxPeekFuseable.java:210)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmit(FluxFlatMap.java:547)
at reactor.core.publisher.FluxFlatMap$FlatMapInner.onNext(FluxFlatMap.java:988)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)
at reactor.core.publisher.Operators$BaseFluxToMonoOperator.completePossiblyEmpty(Operators.java:2097)
at reactor.core.publisher.MonoCollectList$MonoCollectListSubscriber.onComplete(MonoCollectList.java:118)
at reactor.core.publisher.FluxTakeWhile$TakeWhileSubscriber.onComplete(FluxTakeWhile.java:122)
at reactor.core.publisher.FluxTakeWhile$TakeWhileSubscriber.onNext(FluxTakeWhile.java:96)
at reactor.core.publisher.FluxWindowPredicate$WindowFlux.drainRegular(FluxWindowPredicate.java:670)
at reactor.core.publisher.FluxWindowPredicate$WindowFlux.drain(FluxWindowPredicate.java:748)
at reactor.core.publisher.FluxWindowPredicate$WindowFlux.onNext(FluxWindowPredicate.java:790)
at reactor.core.publisher.FluxWindowPredicate$WindowPredicateMain.onNext(FluxWindowPredicate.java:241)
at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.drainAsync(FluxFlattenIterable.java:453)
at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.drain(FluxFlattenIterable.java:724)
at reactor.core.publisher.FluxFlattenIterable$FlattenIterableSubscriber.onNext(FluxFlattenIterable.java:256)
at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:194)
at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299)
at reactor.netty.channel.FluxReceive.drainReceiver(FluxReceive.java:294)
at reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:403)
at reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:426)
at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:802)
at reactor.netty.http.client.WebsocketClientOperations.onInboundNext(WebsocketClientOperations.java:166)
at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114)
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.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:324)
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.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:333)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:454)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
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.handler.ssl.SslHandler.unwrap(SslHandler.java:1475)
at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1338)
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1387)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:529)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:468)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:290)
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.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
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:919)
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:509)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:407)
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)
2023-12-24T15:40:37.431-05:00 INFO 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Outbound channel cancelled
2023-12-24T15:40:37.432-05:00 INFO 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Inbound channel closed
2023-12-24T15:40:37.435-05:00 INFO 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Disconnected from server
2023-12-24T15:41:00.491-05:00 INFO 71805 --- [FAF Client] [JavaFX Application Thread] c.faforever.client.FafClientApplication : Stopping application
2023-12-24T15:41:02.540-05:00 INFO 71805 --- [FAF Client] [JavaFX Application Thread] c.faforever.client.steam.SteamService : Stopping the Steam API
2023-12-24T15:41:02.546-05:00 INFO 71805 --- [FAF Client] [JavaFX Application Thread] c.f.client.fa.relay.ice.IceAdapterImpl : Ignoring call to ICE adapter as we are not connected: quit([])
2023-12-24T15:41:02.548-05:00 INFO 71805 --- [FAF Client] [Thread-15] com.faforever.client.map.MapService : Watcher terminated (null)
2023-12-24T15:41:02.548-05:00 DEBUG 71805 --- [FAF Client] [Thread-16] com.faforever.client.mod.ModService : Watcher terminated (null)
2023-12-24T15:41:02.548-05:00 INFO 71805 --- [FAF Client] [JavaFX Application Thread] c.f.c.map.generator.MapGeneratorService : Deleting generated maps
2023-12-24T15:41:02.552-05:00 INFO 71805 --- [FAF Client] [JavaFX Application Thread] c.f.client.remote.FafServerAccessor : Closing lobby server connection
2023-12-24T15:41:02.553-05:00 WARN 71805 --- [FAF Client] [JavaFX Application Thread] o.s.b.f.support.DisposableBeanAdapter : Invocation of destroy method failed on bean with name 'fafServerAccessor': java.util.concurrent.RejectedExecutionException: event executor terminated
2023-12-24T15:41:02.555-05:00 INFO 71805 --- [FAF Client] [pool-3-thread-1] c.faforever.client.theme.ThemeService : Watcher service terminated
2023-12-24T15:41:02.557-05:00 INFO 71805 --- [FAF Client] [JavaFX Application Thread] c.f.client.config.PreferencesConfig : Writing preferences file `%USER_PROFILE%/.faforever/client.prefs`
2023-12-24T15:41:02.560-05:00 INFO 71805 --- [FAF Client] [JavaFX Application Thread] com.faforever.client.config.BaseConfig : Shutting down ExecutorService 'taskExecutor'
2023-12-24T15:41:02.563-05:00 INFO 71805 --- [FAF Client] [Thread-20] c.faforever.client.FafClientApplication : Starting non-daemon detector thread
```
Describe the bug This is related to the server work here: https://github.com/FAForever/server/pull/990
I'm adding a ban check when using token login just to avoid the situation where the user can have a valid token even if they've been issued a ban in the database before the token expired and can still log in. It looks like the display of notice messages during this step no longer works, as there is an exception about trying to start things from the wrong thread.
To Reproduce
insert into ban (player_id, author_id, reason, level) values (<your user id>, <your user id>, 'Test permanent ban', 'GLOBAL');
Log or error message This is my log file:
This is my log file:
``` 2023-12-24T15:40:32.544-05:00 INFO 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-1] c.f.client.game.GamePrefsService : Trying to read preferences file with charset: Big5 2023-12-24T15:40:32.547-05:00 INFO 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-1] c.f.client.game.GamePrefsService : Successfully read preferences file with charset: Big5 2023-12-24T15:40:32.547-05:00 DEBUG 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-1] c.f.client.game.GamePrefsService : game.prefs file already patched to allow multiple instances 2023-12-24T15:40:32.663-05:00 DEBUG 71805 --- [FAF Client] [JavaFX-Launcher] c.f.client.os.FileOpeningHandler : Registering file opening handler: com.faforever.client.os.FileOpeningHandler 2023-12-24T15:40:32.786-05:00 DEBUG 71805 --- [FAF Client] [JavaFX-Launcher] c.f.c.d.DiscordRichPresenceService : Cleared discord rich presence 2023-12-24T15:40:32.788-05:00 DEBUG 71805 --- [FAF Client] [JavaFX-Launcher] c.f.c.d.DiscordRichPresenceService : Cleared discord rich presence 2023-12-24T15:40:32.881-05:00 INFO 71805 --- [FAF Client] [JavaFX-Launcher] c.faforever.client.steam.SteamService : Starting the Steam API 2023-12-24T15:40:32.892-05:00 DEBUG 71805 --- [FAF Client] [JavaFX-Launcher] c.faforever.client.steam.SteamService : Steam API failed to start 2023-12-24T15:40:33.234-05:00 INFO 71805 --- [FAF Client] [JavaFX-Launcher] o.s.boot.SpringApplication : Started application in 5.948 seconds (process running for 6.965) 2023-12-24T15:40:33.239-05:00 INFO 71805 --- [FAF Client] [taskScheduler-1] c.f.client.config.PreferencesConfig : Writing preferences file `%USER_PROFILE%/.faforever/client.prefs` 2023-12-24T15:40:33.239-05:00 DEBUG 71805 --- [FAF Client] [JavaFX-Launcher] c.faforever.client.util.StartupService : Current preferences directory %USER_PROFILE%/.faforever 2023-12-24T15:40:33.553-05:00 INFO 71805 --- [FAF Client] [JavaFX Application Thread] com.faforever.client.update.Version : The current application version is: 2023.12.1 2023-12-24T15:40:34.277-05:00 INFO 71805 --- [FAF Client] [JavaFX Application Thread] c.f.client.update.ClientUpdateService : Current version: 2023.12.1 2023-12-24T15:40:34.287-05:00 INFO 71805 --- [FAF Client] [pool-3-thread-2] c.f.client.update.CheckForUpdateTask : Checking for client update 2023-12-24T15:40:34.848-05:00 TRACE 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-2] com.faforever.client.update.Version : Comparing current version `2023.12.1` to remote version `2023.11.2` 2023-12-24T15:40:34.850-05:00 INFO 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-2] com.faforever.client.update.Version : fromVersion '2023.11.2' is not newer than toVersion '2023.12.1'. No update is required. 2023-12-24T15:40:34.851-05:00 INFO 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-2] com.faforever.client.user.LoginService : Logging in with refresh token 2023-12-24T15:40:34.933-05:00 DEBUG 71805 --- [FAF Client] [ForkJoinPool.commonPool-worker-2] c.faforever.client.api.TokenRetriever : Retrieving OAuth token 2023-12-24T15:40:35.845-05:00 INFO 71805 --- [FAF Client] [reactor-http-epoll-2] c.faforever.client.api.TokenRetriever : Token valid until 2023-12-24T21:40:35.842244935Z 2023-12-24T15:40:36.375-05:00 TRACE 71805 --- [FAF Client] [reactor-http-epoll-2] c.faforever.client.api.FafApiAccessor : Retrieved MeResult(userId=166198, userName=Askaholic) from /me with type MeResult 2023-12-24T15:40:36.400-05:00 DEBUG 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Beginning connection process 2023-12-24T15:40:36.406-05:00 DEBUG 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Starting login process 2023-12-24T15:40:36.408-05:00 DEBUG 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Opening connection 2023-12-24T15:40:36.488-05:00 INFO 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Connected to ws.faforever.xyz on port 443 2023-12-24T15:40:36.897-05:00 DEBUG 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Starting session listener 2023-12-24T15:40:36.899-05:00 TRACE 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Sending message of type class com.faforever.commons.lobby.SessionRequest 2023-12-24T15:40:36.963-05:00 TRACE 71805 --- [FAF Client] [single-1] c.f.commons.lobby.FafLobbyClient : Outbound message: {"command":"ask_session","version":"2023.12.1","user_agent":"downlords-faf-client"} 2023-12-24T15:40:37.136-05:00 TRACE 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Inbound message: {"command":"session","session":1867916311} 2023-12-24T15:40:37.207-05:00 TRACE 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Sending message of type class com.faforever.commons.lobby.AuthenticateRequest 2023-12-24T15:40:37.218-05:00 TRACE 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Outbound message: {"command":"auth","token":"**********","session":1867916311,"unique_id":"**********"} 2023-12-24T15:40:37.361-05:00 TRACE 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.commons.lobby.FafLobbyClient : Inbound message: {"command":"notice","style":"error","text":"You are banned from FAF forever.Reason:
Test permanent ban
If you would like to appeal this ban, please send an email to: moderation@faforever.com"} 2023-12-24T15:40:37.421-05:00 ERROR 71805 --- [FAF Client] [reactor-http-epoll-2] c.f.client.remote.FafServerAccessor : Error processing notice java.lang.IllegalStateException: Not on FX application thread; currentThread = reactor-http-epoll-2 at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:294) Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: Assembly trace from producer [reactor.core.publisher.FluxPeekFuseable] : reactor.core.publisher.Flux.doOnNext com.faforever.client.remote.FafServerAccessor.afterPropertiesSet(FafServerAccessor.java:86) Error has been observed at the following site(s): *__Flux.doOnNext ⇢ at com.faforever.client.remote.FafServerAccessor.afterPropertiesSet(FafServerAccessor.java:86) Original Stack Trace: at com.sun.javafx.tk.Toolkit.checkFxUserThread(Toolkit.java:294) at com.sun.javafx.tk.quantum.QuantumToolkit.checkFxUserThread(QuantumToolkit.java:475) at javafx.scene.web.WebEngine.checkThread(WebEngine.java:1220) at javafx.scene.web.WebEngine.
OS Linux Client: 2023.12.1