[ https://issues.apache.org/jira/browse/FLINK-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16408470#comment-16408470 ]
ASF GitHub Bot commented on FLINK-8721: --------------------------------------- Github user tillrohrmann commented on a diff in the pull request: https://github.com/apache/flink/pull/5737#discussion_r176207225 --- Diff: flink-runtime/src/main/java/org/apache/flink/runtime/accumulators/StringifiedAccumulatorResult.java --- @@ -67,22 +72,29 @@ public String getValue() { int i = 0; for (Map.Entry<String, Accumulator<?, ?>> entry : accs.entrySet()) { - StringifiedAccumulatorResult result; - Accumulator<?, ?> accumulator = entry.getValue(); - if (accumulator != null) { - Object localValue = accumulator.getLocalValue(); - if (localValue != null) { - result = new StringifiedAccumulatorResult(entry.getKey(), accumulator.getClass().getSimpleName(), localValue.toString()); - } else { - result = new StringifiedAccumulatorResult(entry.getKey(), accumulator.getClass().getSimpleName(), "null"); - } - } else { - result = new StringifiedAccumulatorResult(entry.getKey(), "null", "null"); - } - - results[i++] = result; + results[i++] = stringifyAccumulatorResult(entry.getKey(), entry.getValue()); } return results; } } + + private static StringifiedAccumulatorResult stringifyAccumulatorResult(String name, Accumulator<?, ?> accumulator) { + if (accumulator == null) { + return new StringifiedAccumulatorResult(name, "null", "null"); + } else { + Object localValue; + try { + localValue = accumulator.getLocalValue(); + } + catch (RuntimeException exception) { + LOG.error("Failed to stringify accumulator", exception); --- End diff -- Maybe add `name` to log statement. > Client blocks indefinitely if job archiving fails > ------------------------------------------------- > > Key: FLINK-8721 > URL: https://issues.apache.org/jira/browse/FLINK-8721 > Project: Flink > Issue Type: Improvement > Components: Client, JobManager > Affects Versions: 1.5.0 > Reporter: Chesnay Schepler > Assignee: Piotr Nowojski > Priority: Blocker > Labels: flip-6 > Fix For: 1.5.0 > > > While porting the {{AccumulatorErrorITCase}} i noticed that, for FLIP-6, if > the job archiving fails (in this case due to a custom accumulator throwing an > exception in #merge) no response is sent to the client. > {code} > 3547 [flink-akka.actor.default-dispatcher-2] ERROR > org.apache.flink.runtime.rpc.akka.FencedAkkaRpcActor - Caught exception > while executing runnable in main thread. > org.apache.flink.test.accumulators.AccumulatorErrorITCase$CustomException > at > org.apache.flink.test.accumulators.AccumulatorErrorITCase$FaultyAccumulator.clone(AccumulatorErrorITCase.java:113) > at > org.apache.flink.test.accumulators.AccumulatorErrorITCase$FaultyAccumulator.clone(AccumulatorErrorITCase.java:107) > at > org.apache.flink.api.common.accumulators.AccumulatorHelper.mergeInto(AccumulatorHelper.java:52) > at > org.apache.flink.runtime.executiongraph.ExecutionJobVertex.getAggregatedUserAccumulatorsStringified(ExecutionJobVertex.java:599) > at > org.apache.flink.runtime.executiongraph.ArchivedExecutionJobVertex.<init>(ArchivedExecutionJobVertex.java:49) > at > org.apache.flink.runtime.executiongraph.ExecutionJobVertex.archive(ExecutionJobVertex.java:612) > at > org.apache.flink.runtime.executiongraph.ArchivedExecutionGraph.createFrom(ArchivedExecutionGraph.java:313) > at > org.apache.flink.runtime.jobmaster.JobMaster.jobStatusChanged(JobMaster.java:985) > at > org.apache.flink.runtime.jobmaster.JobMaster.access$1400(JobMaster.java:136) > at > org.apache.flink.runtime.jobmaster.JobMaster$JobManagerJobStatusListener.lambda$jobStatusChanges$0(JobMaster.java:1181) > at > org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleRunAsync(AkkaRpcActor.java:292) > at > org.apache.flink.runtime.rpc.akka.AkkaRpcActor.handleMessage(AkkaRpcActor.java:147) > at > org.apache.flink.runtime.rpc.akka.FencedAkkaRpcActor.handleMessage(FencedAkkaRpcActor.java:66) > at > org.apache.flink.runtime.rpc.akka.AkkaRpcActor.lambda$onReceive$0(AkkaRpcActor.java:129) > at > akka.actor.ActorCell$$anonfun$become$1.applyOrElse(ActorCell.scala:544) > at akka.actor.Actor$class.aroundReceive(Actor.scala:502) > at akka.actor.UntypedActor.aroundReceive(UntypedActor.scala:95) > at akka.actor.ActorCell.receiveMessage(ActorCell.scala:526) > at akka.actor.ActorCell.invoke(ActorCell.scala:495) > at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:257) > at akka.dispatch.Mailbox.run(Mailbox.scala:224) > at akka.dispatch.Mailbox.exec(Mailbox.scala:234) > at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) > at > scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) > at > scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) > at > scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) > {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)