[ https://issues.apache.org/jira/browse/JAMES-3840?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Benoit Tellier closed JAMES-3840. --------------------------------- Fix Version/s: 3.8.0 Resolution: Fixed https://github.com/apache/james-project/pull/1266 solved this. > Failure to store Preview > ------------------------ > > Key: JAMES-3840 > URL: https://issues.apache.org/jira/browse/JAMES-3840 > Project: James Server > Issue Type: Bug > Components: JMAP > Reporter: Benoit Tellier > Assignee: Antoine Duprat > Priority: Major > Fix For: 3.8.0 > > Time Spent: 10m > Remaining Estimate: 0h > > If the preview split falls in the middle of an EMOJI then the Cassandra > driver fails, complains that the UTF-8 input is onvalid. > Preview should be sanitized before-hand... > The error: > {code:java} > exception java.lang.IllegalArgumentException: > java.nio.charset.MalformedInputException: Input length = 1 > at > com.datastax.oss.driver.internal.core.type.codec.StringCodec.encode(StringCodec.java:97) > at > com.datastax.oss.driver.internal.core.type.codec.StringCodec.encode(StringCodec.java:35) > at > com.datastax.oss.driver.api.core.data.SettableByIndex.set(SettableByIndex.java:94) > at > com.datastax.oss.driver.api.core.data.SettableByIndex.set(SettableByIndex.java:133) > at > com.datastax.oss.driver.api.core.data.SettableByIndex.setString(SettableByIndex.java:349) > at > com.datastax.oss.driver.api.core.data.SettableByName.setString(SettableByName.java:450) > at > org.apache.james.jmap.cassandra.projections.CassandraMessageFastViewProjection.store(CassandraMessageFastViewProjection.java:103) > at > org.apache.james.jmap.cassandra.projections.CassandraMessageFastViewProjection.store(CassandraMessageFastViewProjection.java:56) > at > org.apache.james.jmap.event.ComputeMessageFastViewProjectionListener.lambda$handleAddedEvent$2(ComputeMessageFastViewProjectionListener.java:94) > at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:386) > at > reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmitScalar(FluxFlatMap.java:488) > at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:421) > at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) > at > reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:712) > at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:588) > at > reactor.core.publisher.FluxFlatMap$FlatMapInner.onNext(FluxFlatMap.java:971) > at > reactor.core.publisher.FluxGroupBy$UnicastGroupedFlux.drainFused(FluxGroupBy.java:619) > at > reactor.core.publisher.FluxGroupBy$UnicastGroupedFlux.drain(FluxGroupBy.java:649) > at > reactor.core.publisher.FluxGroupBy$UnicastGroupedFlux.subscribe(FluxGroupBy.java:718) > at reactor.core.publisher.Flux.subscribe(Flux.java:8469) > at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:426) > at > reactor.core.publisher.FluxFilterWhen$FluxFilterWhenSubscriber.drain(FluxFilterWhen.java:301) > at > reactor.core.publisher.FluxFilterWhen$FluxFilterWhenSubscriber.innerResult(FluxFilterWhen.java:369) > at > reactor.core.publisher.FluxFilterWhen$FilterWhenInner.onNext(FluxFilterWhen.java:450) > at > reactor.core.publisher.FluxFilterWhen$FilterWhenInner.onNext(FluxFilterWhen.java:414) > at > reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) > at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) > at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) > at > reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) > at > reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816) > at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:251) > at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:336) > at > reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816) > at > reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:249) > at > reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129) > at > reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2398) > at > reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171) > at > reactor.core.publisher.MonoFlatMap$FlatMapInner.onSubscribe(MonoFlatMap.java:238) > at > reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:96) > at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) > at > reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) > at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157) > at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) > at > com.datastax.dse.driver.internal.core.cql.reactive.ReactiveResultSetSubscription.doOnNext(ReactiveResultSetSubscription.java:364) > at > com.datastax.dse.driver.internal.core.cql.reactive.ReactiveResultSetSubscription.drain(ReactiveResultSetSubscription.java:236) > at > com.datastax.dse.driver.internal.core.cql.reactive.ReactiveResultSetSubscription.lambda$fetchNextPageAndEnqueue$2(ReactiveResultSetSubscription.java:358) > at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(Unknown > Source) > at java.base/java.util.concurrent.CompletableFuture.postComplete(Unknown > Source) > at java.base/java.util.concurrent.CompletableFuture.complete(Unknown Source) > at > com.datastax.oss.driver.internal.core.cql.CqlRequestHandler.setFinalResult(CqlRequestHandler.java:324) > at > com.datastax.oss.driver.internal.core.cql.CqlRequestHandler.access$1500(CqlRequestHandler.java:95) > at > com.datastax.oss.driver.internal.core.cql.CqlRequestHandler$NodeResponseCallback.onResponse(CqlRequestHandler.java:655) > at > com.datastax.oss.driver.internal.core.channel.InFlightHandler.channelRead(InFlightHandler.java:257) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) > at > io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) > at > io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) > at > io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) > at > io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) > at > io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) > at > io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) > at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722) > at > io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658) > at > io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584) > at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) > at > io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) > 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(Unknown Source) Caused by: > java.nio.charset.MalformedInputException: Input length = 1 > at java.base/java.nio.charset.CoderResult.throwException(Unknown Source) > at java.base/java.nio.charset.CharsetEncoder.encode(Unknown Source) > at > com.datastax.oss.driver.internal.core.type.codec.StringCodec.encode(StringCodec.java:95) > ... 77 common frames omitted > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org