Thanks Chesnay. Will try and report back. On Fri, Jul 30, 2021, 10:19 Chesnay Schepler <ches...@apache.org> wrote:
> Of course if is finding the file, you are actively pointing it towards it. > The BashJavaUtils are supposed to use the log4j configuration file *that > is bundled in the BashJavaUtils.jar, *which you are now interfering with. > That's also why it doesn't require all of lib/ to be on the classpath; the > flink-dist jar is enough. > > If you configure the log4j configuration file via the env.java.options in > flink-conf.yaml, then it should not be picked up by the BashJavaUtils. > > On 30/07/2021 08:48, Yuval Itzchakov wrote: > > It is finding the file though, the problem is that the lib/ might not be > on the classpath when the file is being parsed, thus the YAML file is not > recognized as being parsable. > > Is there a way to differ the inference from BashJavaUtils to the actual > bootstrap of the app? or perhaps add the lib to the utils classpath? > > On Thu, Jul 29, 2021, 17:55 Chesnay Schepler <ches...@apache.org> wrote: > >> That could be...could you try configuring "env.java.opts: >> -Dlog4j.configurationFile=..."? >> >> On 29/07/2021 15:18, Yuval Itzchakov wrote: >> >> Perhaps because I'm passing it as an argument to the job with >> -Dlog4j.configurationFile=... ? >> >> On Thu, Jul 29, 2021 at 3:27 PM Chesnay Schepler <ches...@apache.org> >> wrote: >> >>> Looking once more at the stacktrace this happens in the BashJavaUtils, >>> which only puts flink-dist and not the entire lib/ directory on the >>> classpath. >>> What I don't understand is why it would pick up your log4j file. It >>> should only use the file that is embedded within BashJavaUtils.jar. >>> >>> On 29/07/2021 13:11, Yuval Itzchakov wrote: >>> >>> Hi Chesnay, >>> >>> So I looked into it, and jackson-databind is definitely in my UBER jar >>> as a transitive dependency. Additionally, this uber JAR is added to the >>> `lib/` directly for Flink before I start the job, yet it still fails. >>> Are there any other paths I should explore? >>> >>> One thing to add is that I'm using the "classloader.resolve-order" = >>> "parent-first" flag due to my lib having some deps that otherwise cause >>> runtime collision errors in Kafka. >>> >>> >>> On Wed, Jul 7, 2021 at 12:25 PM Yuval Itzchakov <yuva...@gmail.com> >>> wrote: >>> >>>> Interesting, I don't have bind explicitly on the classpath, will give >>>> it a try. >>>> >>>> Although locally it is working properly. >>>> >>>> On Wed, Jul 7, 2021, 12:19 Chesnay Schepler <ches...@apache.org> wrote: >>>> >>>>> According to the log4j documentation you need both jackson-databind >>>>> and jackson-dataformat-yaml to be on the classpath. >>>>> Did you make sure that that this is the case in 1.13.1? It could very >>>>> well be that in 1.9 databind was on the classpath by chance. >>>>> >>>>> On 07/07/2021 10:22, Arvid Heise wrote: >>>>> >>>>> Hi Yuval, >>>>> >>>>> For some reason the YamlConfigurationFactory is not correctly loaded >>>>> and the fallback XmlConfigurationFactory is used unsuccessfully. >>>>> You could try to force DEBUG on that YamlConfigurationFactory and >>>>> check for some output like >>>>> "Missing dependencies for Yaml support, ConfigurationFactory {} is >>>>> inactive" >>>>> >>>>> In particular, it checks for these classes >>>>> "com.fasterxml.jackson.databind.ObjectMapper", >>>>> "com.fasterxml.jackson.databind.JsonNode", >>>>> "com.fasterxml.jackson.core.JsonParser", >>>>> "com.fasterxml.jackson.dataformat.yaml.YAMLFactory" >>>>> >>>>> I'm assuming that with improved classloader separation, you actually >>>>> need to put your dependency into `lib/` instead of putting it into your >>>>> user jar. But I'm pulling in @Chesnay Schepler <ches...@apache.org> >>>>> who has much more insights. >>>>> >>>>> On Sun, Jul 4, 2021 at 9:45 PM Yuval Itzchakov <yuva...@gmail.com> >>>>> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> I am attempting to upgrade Flink from 1.9 to 1.13.1 >>>>>> I am using a YAML based log4j file. In 1.9, it worked perfectly fine >>>>>> by adding the following dependency to the classpath (I deploy with an >>>>>> uber >>>>>> JAR): >>>>>> >>>>>> "com.fasterxml.jackson.dataformat" % "jackson-dataformat-yaml" >>>>>> % "2.12.3" >>>>>> >>>>>> However, with Flink 1.13.1 I get the following error at runtime (only >>>>>> when running in a Cluster, running locally works fine): >>>>>> >>>>>> >>>>>> >>>>>> *flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager [Fatal Error] log4j2.yaml:1:1: Content is not allowed in >>>>>> prolog. flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager ERROR StatusLogger Error parsing /opt/foo/conf/log4j2.yaml >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager >>>>>> org.xml.sax.SAXParseException; systemId: >>>>>> file:///opt/foo/conf/log4j2.yaml; >>>>>> lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.* >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:261) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.log4j.core.config.xml.XmlConfiguration.<init>(XmlConfiguration.java:92) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory.getConfiguration(XmlConfigurationFactory.java:46) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:458) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:385) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:293) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:647) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:668) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:253) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.log4j.LogManager.getContext(LogManager.java:155) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:48) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:329) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:349) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager at >>>>>> org.apache.flink.runtime.util.bash.BashJavaUtils.<clinit>(BashJavaUtils.java:45) >>>>>> flink-aamtr-a11e58230095d9390e8547eccb0290d4-27ef11e7-tm-6r8dfx >>>>>> taskmanager ERROR StatusLogger No logging configuration >>>>>> >>>>>> This indicates that for some reason, the jackson dataformat YAML >>>>>> library is not getting properly loaded from my uber JAR at runtime. >>>>>> >>>>>> Has anyone run into this? Any possible workarounds? >>>>>> -- >>>>>> Best Regards, >>>>>> Yuval Itzchakov. >>>>>> >>>>> >>>>> >>> >>> -- >>> Best Regards, >>> Yuval Itzchakov. >>> >>> >>> >> >> -- >> Best Regards, >> Yuval Itzchakov. >> >> >> >