Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 83325200B50 for ; Thu, 23 Jun 2016 11:26:18 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 81F11160A58; Thu, 23 Jun 2016 09:26:18 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id A6322160A69 for ; Thu, 23 Jun 2016 11:26:17 +0200 (CEST) Received: (qmail 90872 invoked by uid 500); 23 Jun 2016 09:26:16 -0000 Mailing-List: contact dev-help@brooklyn.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@brooklyn.apache.org Delivered-To: mailing list dev@brooklyn.apache.org Received: (qmail 90586 invoked by uid 99); 23 Jun 2016 09:26:16 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 23 Jun 2016 09:26:16 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 80FF02C1F6C for ; Thu, 23 Jun 2016 09:26:16 +0000 (UTC) Date: Thu, 23 Jun 2016 09:26:16 +0000 (UTC) From: "ASF GitHub Bot (JIRA)" To: dev@brooklyn.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (BROOKLYN-305) Rebind fails when entity attribute contains special unicode character "" MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Thu, 23 Jun 2016 09:26:18 -0000 [ https://issues.apache.org/jira/browse/BROOKLYN-305?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15346154#comment-15346154 ] ASF GitHub Bot commented on BROOKLYN-305: ----------------------------------------- Github user aledsage commented on a diff in the pull request: https://github.com/apache/brooklyn-server/pull/214#discussion_r68202480 --- Diff: core/src/main/java/org/apache/brooklyn/core/mgmt/persist/BrooklynMementoPersisterToObjectStore.java --- @@ -294,7 +294,7 @@ public void visit(BrooklynObjectType type, String id, String contentsSubpath) th exceptionHandler.onLoadMementoFailed(type, "memento "+id+" read error", e); } - String xmlId = (String) XmlUtil.xpath(contents, "/"+type.toCamelCase()+"/id"); + String xmlId = (String) XmlUtil.xpathHandlingIllegalChars(contents, "/"+type.toCamelCase()+"/id"); --- End diff -- We're making the assumption that the `id` field etc won't have crazy characters in it (because the Brooklyn framework generates those ids). The place we can get crazy characters is in attributes and config values that are set by the user. > Rebind fails when entity attribute contains special unicode character "" > ------------------------------------------------------------------------------ > > Key: BROOKLYN-305 > URL: https://issues.apache.org/jira/browse/BROOKLYN-305 > Project: Brooklyn > Issue Type: Bug > Affects Versions: 0.9.0 > Reporter: Aled Sage > > I had an entity with a sensor value that contained unicode character 27 (in the persisted state, this was converted to by xstream to {{}} and written to the xml file). > On restarting Brooklyn, it failed to restart. This is because {{}} is an illegal character in xml. The xstream deserialization works fine, but our code first uses xpath to extract the entity id from the raw xml. That fails with the exception below: > {noformat} > 2016-06-22 09:17:09,555 ERROR o.a.b.l.common.BasicLauncher [main]: Subsystem for persistence had startup error (continuing with startup): org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: Failure rebinding; 3 errors including: problem loading memento: memento X2C3QT87 loading raw error: SAXParseException: Character reference "&# > org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: > at org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:128) ~[brooklyn-utils-common-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebind(RebindManagerImpl.java:507) ~[brooklyn-clocker-patches-1.2.0-20160609.1043.jar:1.2.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.ha.HighAvailabilityManagerImpl.promoteToMaster(HighAvailabilityManagerImpl.java:836) ~[brooklyn-core-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.ha.HighAvailabilityManagerImpl.checkMaster(HighAvailabilityManagerImpl.java:810) ~[brooklyn-core-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.ha.HighAvailabilityManagerImpl.publishAndCheck(HighAvailabilityManagerImpl.java:592) ~[brooklyn-core-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.ha.HighAvailabilityManagerImpl.changeMode(HighAvailabilityManagerImpl.java:315) ~[brooklyn-core-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.ha.HighAvailabilityManagerImpl.start(HighAvailabilityManagerImpl.java:255) ~[brooklyn-core-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.launcher.common.BasicLauncher.startPersistence(BasicLauncher.java:644) [brooklyn-launcher-common-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.launcher.common.BasicLauncher.handlePersistence(BasicLauncher.java:506) [brooklyn-launcher-common-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.launcher.common.BasicLauncher.start(BasicLauncher.java:424) [brooklyn-launcher-common-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.cli.Main$LaunchCommand.call(Main.java:461) [brooklyn-cli-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.cli.Main$LaunchCommand.call(Main.java:196) [brooklyn-cli-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.cli.AbstractMain.execCli(AbstractMain.java:252) [brooklyn-cli-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.cli.AbstractMain.execCli(AbstractMain.java:244) [brooklyn-cli-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at io.cloudsoft.amp.Main.main(Main.java:39) [amp-launcher-3.2.1.jar:na] > Caused by: java.util.concurrent.ExecutionException: org.apache.brooklyn.util.exceptions.CompoundRuntimeException: Failure rebinding; 3 errors including: problem loading memento: memento X2C3QT87 loading raw error: SAXParseException: Character reference "&# > at java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[na:1.8.0_91] > at java.util.concurrent.FutureTask.get(FutureTask.java:192) ~[na:1.8.0_91] > at com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63) ~[guava-16.0.1.jar:na] > at org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:361) ~[brooklyn-core-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebind(RebindManagerImpl.java:505) ~[brooklyn-clocker-patches-1.2.0-20160609.1043.jar:1.2.0-20160609.1043] > ... 13 common frames omitted > org.apache.brooklyn.util.exceptions.CompoundRuntimeException: Failure rebinding; 3 errors including: problem loading memento: memento X2C3QT87 loading raw error: SAXParseException: Character reference "&# > at org.apache.brooklyn.util.exceptions.Exceptions.create(Exceptions.java:393) ~[brooklyn-utils-common-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl.onDoneImpl(RebindExceptionHandlerImpl.java:497) ~[brooklyn-core-0.10.0-20160609.1043.jar:1.2.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl.onDone(RebindExceptionHandlerImpl.java:413) ~[brooklyn-core-0.10.0-20160609.1043.jar:1.2.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.rebind.RebindIteration.run(RebindIteration.java:267) ~[brooklyn-core-0.10.0-20160609.1043.jar:1.2.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl.rebindImpl(RebindManagerImpl.java:552) ~[brooklyn-clocker-patches-1.2.0-20160609.1043.jar:1.2.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:502) ~[brooklyn-clocker-patches-1.2.0-20160609.1043.jar:1.2.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.rebind.RebindManagerImpl$3.call(RebindManagerImpl.java:500) ~[brooklyn-clocker-patches-1.2.0-20160609.1043.jar:1.2.0-20160609.1043] > at org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:519) ~[brooklyn-core-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_91] > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[na:1.8.0_91] > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[na:1.8.0_91] > at java.lang.Thread.run(Thread.java:745) ~[na:1.8.0_91] > Caused by: java.lang.IllegalStateException: problem loading memento: memento X2C3QT87 loading raw error > at org.apache.brooklyn.core.mgmt.rebind.RebindExceptionHandlerImpl.onLoadMementoFailed(RebindExceptionHandlerImpl.java:178) ~[brooklyn-core-0.10.0-20160609.1043.jar:1.2.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectStore$1VisitorWrapper.run(BrooklynMementoPersisterToObjectStore.java:455) ~[brooklyn-core-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[na:1.8.0_91] > ... 4 common frames omitted > Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: > at org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:128) ~[brooklyn-utils-common-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.util.core.xstream.XmlUtil.xpath(XmlUtil.java:51) ~[brooklyn-core-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectStore$2.visit(BrooklynMementoPersisterToObjectStore.java:297) ~[brooklyn-core-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > at org.apache.brooklyn.core.mgmt.persist.BrooklynMementoPersisterToObjectStore$1VisitorWrapper.run(BrooklynMementoPersisterToObjectStore.java:452) ~[brooklyn-core-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > ... 5 common frames omitted > Caused by: org.xml.sax.SAXParseException: Character reference "&# > at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257) ~[na:1.8.0_91] > at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339) ~[na:1.8.0_91] > at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121) ~[na:1.8.0_91] > at org.apache.brooklyn.util.core.xstream.XmlUtil.xpath(XmlUtil.java:42) ~[brooklyn-core-0.10.0-20160609.1043.jar:0.10.0-20160609.1043] > ... 7 common frames omitted > {noformat} > The workaround is to replace this character in the persisted state (after first backing it up, obviously!): > {noformat} > tar czf persisted-state.tgz persisted-state/ > cd persisted-state/ > find . -type f -exec sed -i.bak 's//X/g' {} \; > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)