Repository: quarkusio/quarkus
Issue: Dev UI - DevConsolePostHandler.flashMessage() results in EOFException

Steps to reproduce:
1. Start [cache-quickstart](https://github.com/quarkusio/quarkus-quickstarts/tree/main/cache-quickstart) in the dev mode
2. Open http://localhost:8080/q/dev/io.quarkus.quarkus-cache/caches in the browser
3. Clear the cache - the cache is cleared but the following exception is thrown:

```
java.io.EOFException
	at java.base/java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2872)
	at java.base/java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:3367)
	at java.base/java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:936)
	at java.base/java.io.ObjectInputStream.<init>(ObjectInputStream.java:379)
	at io.quarkus.devconsole.runtime.spi.FlashScopeUtil.unmarshallMap(FlashScopeUtil.java:55)
	at io.quarkus.devconsole.runtime.spi.FlashScopeUtil.handleFlashCookie(FlashScopeUtil.java:34)
	at io.quarkus.vertx.http.deployment.devmode.console.FlashScopeHandler.handle(FlashScopeHandler.java:11)
	at io.quarkus.vertx.http.deployment.devmode.console.FlashScopeHandler.handle(FlashScopeHandler.java:7)
	at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1129)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:151)
	at io.vertx.ext.web.impl.RoutingContextWrapper.next(RoutingContextWrapper.java:196)
	at io.vertx.ext.web.impl.RouterImpl.handleContext(RouterImpl.java:236)
	at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1129)
	at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:151)
	at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:133)
	at io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:55)
	at io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:37)
	at io.quarkus.vertx.http.deployment.devmode.console.DevConsoleProcessor$2$1.handle(DevConsoleProcessor.java:189)
	at io.quarkus.vertx.http.deployment.devmode.console.DevConsoleProcessor$2$1.handle(DevConsoleProcessor.java:186)
	at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:52)
	at io.vertx.core.impl.EventLoopContext.lambda$emit$1(EventLoopContext.java:59)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
	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:834)
Resulted in: java.lang.RuntimeException: java.io.EOFException
	at io.quarkus.devconsole.runtime.spi.FlashScopeUtil.unmarshallMap(FlashScopeUtil.java:58)
	... 23 more
```

NOTE: The same behavior can be reproduced with the [scheduler-quickstart](https://github.com/quarkusio/quarkus-quickstarts/tree/main/scheduler-quickstart).

Changed files:
extensions/vertx-http/dev-console-runtime-spi/src/main/java/io/quarkus/devconsole/runtime/spi/FlashScopeUtil.java

diff --git a/extensions/vertx-http/dev-console-runtime-spi/src/main/java/io/quarkus/devconsole/runtime/spi/FlashScopeUtil.java b/extensions/vertx-http/dev-console-runtime-spi/src/main/java/io/quarkus/devconsole/runtime/spi/FlashScopeUtil.java
index 42791ad49bf..fe12ed6e0be 100644
--- a/extensions/vertx-http/dev-console-runtime-spi/src/main/java/io/quarkus/devconsole/runtime/spi/FlashScopeUtil.java
+++ b/extensions/vertx-http/dev-console-runtime-spi/src/main/java/io/quarkus/devconsole/runtime/spi/FlashScopeUtil.java
@@ -29,11 +29,19 @@ public static Object getFlash(RoutingContext event) {
 
     public static void handleFlashCookie(RoutingContext event) {
         Cookie cookie = event.request().getCookie(FLASH_COOKIE_NAME);
-        event.response().removeCookie(FLASH_COOKIE_NAME);
         if (cookie != null) {
-            Map<String, Object> data = unmarshallMap(Base64.getDecoder().decode(cookie.getValue().getBytes()));
-            event.data().put(FLASH_CONTEXT_DATA_NAME, data);
+            byte[] bytes = cookie.getValue().getBytes();
+            if (bytes != null && bytes.length != 0) {
+                byte[] decoded = Base64.getDecoder().decode(bytes);
+                // API says it can't be null
+                if (decoded.length > 0) {
+                    Map<String, Object> data = unmarshallMap(decoded);
+                    event.data().put(FLASH_CONTEXT_DATA_NAME, data);
+                }
+            }
         }
+        // must do this after we've read the value, otherwise we can't read it, for some reason
+        event.response().removeCookie(FLASH_COOKIE_NAME);
     }
 
     // we don't use json because quarkus-vertx-http does not depend on Jackson databind and therefore the