Re: broken Log4j2Plugins.dat in the shaded benchmarks.jar of log4j-perf
I've had to use this plugin in the past. I'm glad to hear of this agreement!: -) Gary On Fri, Oct 15, 2021, 06:42 Volkan Yazıcı wrote: > I have gotten in touch with the author of the > maven-shaded-log4j-transformer plugin, Eduard Gizatullin. He has kindly > accepted to contribute this plugin in the form of a PR to the project. I > gave him a briefing about the ICLA, Jira ticket, GitHub PR, etc. process > and told him to first send an email to this list laying out the details of > the plan. Let's see how it will pan out. > > On Wed, Oct 13, 2021 at 7:11 PM Matt Sicker wrote: > > > The 3.x code loads plugins from generated Java classes that correspond > > to ServiceLoader-loadable classes. Since each jar tends to end up with > > their generated plugin class going into different package names, the > > result of shading them together works naturally with combining the > > META-INF/services/ files. For the .dat file, that's a custom format > > that's essentially a light serialized form of the plugin metadata > > which has to be programmatically combined together. The ServiceLoader > > approach was eventually adopted as it works much better with the Java > > module system, though it also helps solve the shading problem, too, > > without additional tooling. > > > > In the meantime, we could publish a Maven plugin or something to > > combine 2.x plugin .dat files into a single one. > > > > On Wed, Oct 13, 2021 at 9:34 AM Volkan Yazıcı wrote: > > > > > > It works on `master`. Matt, mind shedding some light on why it works on > > > `master`, but doesn't on `release-2.x`? Maybe we can backport the trick > > on > > > `master` to `release-2.x`? > > > > > > On Wed, Oct 13, 2021 at 4:05 PM Apache > > wrote: > > > > > > > We could include it in Log4J. Does master work out of the box? > > > > > > > > Ralph > > > > > > > > > On Oct 13, 2021, at 12:23 AM, Volkan Yazıcı > wrote: > > > > > > > > > > > > > > > I have done something really nasty in the release-2.x branch to fix > > > > benchmarks.jar generated by log4j-perf. Since a picture is worth a > > thousand > > > > words, I am sharing two: > > > > > > > > > > > > > > > > > > > > (In case images get truncated, see commit 4049240c.) > > > > > > > > > > In a nutshell, Log4j2Plugins.dat of the shaded benchmarks.jar > doesn't > > > > contain log4j-layout-template-json plugins due to overrides taking > > place > > > > during shading. This problem rendered the JsonTemplateLayout > benchmarks > > > > broken after JTLs migration to plugins. Using a 3rd party Maven > plugin > > > > circumventing a Log4j bug in the Log4j project itself felt pretty > > > > unpleasant to me. Is there any other way I could have solved this? > > > > > > > > > > > > > > >
Re: broken Log4j2Plugins.dat in the shaded benchmarks.jar of log4j-perf
This sounds great. Thanks, Volkan! -ck > On Oct 15, 2021, at 6:42 AM, Volkan Yazıcı wrote: > > I have gotten in touch with the author of the > maven-shaded-log4j-transformer plugin, Eduard Gizatullin. He has kindly > accepted to contribute this plugin in the form of a PR to the project. I > gave him a briefing about the ICLA, Jira ticket, GitHub PR, etc. process > and told him to first send an email to this list laying out the details of > the plan. Let's see how it will pan out. > >> On Wed, Oct 13, 2021 at 7:11 PM Matt Sicker wrote: >> >> The 3.x code loads plugins from generated Java classes that correspond >> to ServiceLoader-loadable classes. Since each jar tends to end up with >> their generated plugin class going into different package names, the >> result of shading them together works naturally with combining the >> META-INF/services/ files. For the .dat file, that's a custom format >> that's essentially a light serialized form of the plugin metadata >> which has to be programmatically combined together. The ServiceLoader >> approach was eventually adopted as it works much better with the Java >> module system, though it also helps solve the shading problem, too, >> without additional tooling. >> >> In the meantime, we could publish a Maven plugin or something to >> combine 2.x plugin .dat files into a single one. >> >>> On Wed, Oct 13, 2021 at 9:34 AM Volkan Yazıcı wrote: >>> >>> It works on `master`. Matt, mind shedding some light on why it works on >>> `master`, but doesn't on `release-2.x`? Maybe we can backport the trick >> on >>> `master` to `release-2.x`? >>> >>> On Wed, Oct 13, 2021 at 4:05 PM Apache >> wrote: >>> We could include it in Log4J. Does master work out of the box? Ralph > On Oct 13, 2021, at 12:23 AM, Volkan Yazıcı wrote: > > > I have done something really nasty in the release-2.x branch to fix benchmarks.jar generated by log4j-perf. Since a picture is worth a >> thousand words, I am sharing two: > > > > (In case images get truncated, see commit 4049240c.) > > In a nutshell, Log4j2Plugins.dat of the shaded benchmarks.jar doesn't contain log4j-layout-template-json plugins due to overrides taking >> place during shading. This problem rendered the JsonTemplateLayout benchmarks broken after JTLs migration to plugins. Using a 3rd party Maven plugin circumventing a Log4j bug in the Log4j project itself felt pretty unpleasant to me. Is there any other way I could have solved this? >>
Re: broken Log4j2Plugins.dat in the shaded benchmarks.jar of log4j-perf
I have gotten in touch with the author of the maven-shaded-log4j-transformer plugin, Eduard Gizatullin. He has kindly accepted to contribute this plugin in the form of a PR to the project. I gave him a briefing about the ICLA, Jira ticket, GitHub PR, etc. process and told him to first send an email to this list laying out the details of the plan. Let's see how it will pan out. On Wed, Oct 13, 2021 at 7:11 PM Matt Sicker wrote: > The 3.x code loads plugins from generated Java classes that correspond > to ServiceLoader-loadable classes. Since each jar tends to end up with > their generated plugin class going into different package names, the > result of shading them together works naturally with combining the > META-INF/services/ files. For the .dat file, that's a custom format > that's essentially a light serialized form of the plugin metadata > which has to be programmatically combined together. The ServiceLoader > approach was eventually adopted as it works much better with the Java > module system, though it also helps solve the shading problem, too, > without additional tooling. > > In the meantime, we could publish a Maven plugin or something to > combine 2.x plugin .dat files into a single one. > > On Wed, Oct 13, 2021 at 9:34 AM Volkan Yazıcı wrote: > > > > It works on `master`. Matt, mind shedding some light on why it works on > > `master`, but doesn't on `release-2.x`? Maybe we can backport the trick > on > > `master` to `release-2.x`? > > > > On Wed, Oct 13, 2021 at 4:05 PM Apache > wrote: > > > > > We could include it in Log4J. Does master work out of the box? > > > > > > Ralph > > > > > > > On Oct 13, 2021, at 12:23 AM, Volkan Yazıcı wrote: > > > > > > > > > > > > I have done something really nasty in the release-2.x branch to fix > > > benchmarks.jar generated by log4j-perf. Since a picture is worth a > thousand > > > words, I am sharing two: > > > > > > > > > > > > > > > > (In case images get truncated, see commit 4049240c.) > > > > > > > > In a nutshell, Log4j2Plugins.dat of the shaded benchmarks.jar doesn't > > > contain log4j-layout-template-json plugins due to overrides taking > place > > > during shading. This problem rendered the JsonTemplateLayout benchmarks > > > broken after JTLs migration to plugins. Using a 3rd party Maven plugin > > > circumventing a Log4j bug in the Log4j project itself felt pretty > > > unpleasant to me. Is there any other way I could have solved this? > > > > > > > > > >
Re: broken Log4j2Plugins.dat in the shaded benchmarks.jar of log4j-perf
The 3.x code loads plugins from generated Java classes that correspond to ServiceLoader-loadable classes. Since each jar tends to end up with their generated plugin class going into different package names, the result of shading them together works naturally with combining the META-INF/services/ files. For the .dat file, that's a custom format that's essentially a light serialized form of the plugin metadata which has to be programmatically combined together. The ServiceLoader approach was eventually adopted as it works much better with the Java module system, though it also helps solve the shading problem, too, without additional tooling. In the meantime, we could publish a Maven plugin or something to combine 2.x plugin .dat files into a single one. On Wed, Oct 13, 2021 at 9:34 AM Volkan Yazıcı wrote: > > It works on `master`. Matt, mind shedding some light on why it works on > `master`, but doesn't on `release-2.x`? Maybe we can backport the trick on > `master` to `release-2.x`? > > On Wed, Oct 13, 2021 at 4:05 PM Apache wrote: > > > We could include it in Log4J. Does master work out of the box? > > > > Ralph > > > > > On Oct 13, 2021, at 12:23 AM, Volkan Yazıcı wrote: > > > > > > > > > I have done something really nasty in the release-2.x branch to fix > > benchmarks.jar generated by log4j-perf. Since a picture is worth a thousand > > words, I am sharing two: > > > > > > > > > > > > (In case images get truncated, see commit 4049240c.) > > > > > > In a nutshell, Log4j2Plugins.dat of the shaded benchmarks.jar doesn't > > contain log4j-layout-template-json plugins due to overrides taking place > > during shading. This problem rendered the JsonTemplateLayout benchmarks > > broken after JTLs migration to plugins. Using a 3rd party Maven plugin > > circumventing a Log4j bug in the Log4j project itself felt pretty > > unpleasant to me. Is there any other way I could have solved this? > > > > > >
Re: broken Log4j2Plugins.dat in the shaded benchmarks.jar of log4j-perf
It works on `master`. Matt, mind shedding some light on why it works on `master`, but doesn't on `release-2.x`? Maybe we can backport the trick on `master` to `release-2.x`? On Wed, Oct 13, 2021 at 4:05 PM Apache wrote: > We could include it in Log4J. Does master work out of the box? > > Ralph > > > On Oct 13, 2021, at 12:23 AM, Volkan Yazıcı wrote: > > > > > > I have done something really nasty in the release-2.x branch to fix > benchmarks.jar generated by log4j-perf. Since a picture is worth a thousand > words, I am sharing two: > > > > > > > > (In case images get truncated, see commit 4049240c.) > > > > In a nutshell, Log4j2Plugins.dat of the shaded benchmarks.jar doesn't > contain log4j-layout-template-json plugins due to overrides taking place > during shading. This problem rendered the JsonTemplateLayout benchmarks > broken after JTLs migration to plugins. Using a 3rd party Maven plugin > circumventing a Log4j bug in the Log4j project itself felt pretty > unpleasant to me. Is there any other way I could have solved this? > > >
Re: broken Log4j2Plugins.dat in the shaded benchmarks.jar of log4j-perf
We could include it in Log4J. Does master work out of the box? Ralph > On Oct 13, 2021, at 12:23 AM, Volkan Yazıcı wrote: > > > I have done something really nasty in the release-2.x branch to fix > benchmarks.jar generated by log4j-perf. Since a picture is worth a thousand > words, I am sharing two: > > > > (In case images get truncated, see commit 4049240c.) > > In a nutshell, Log4j2Plugins.dat of the shaded benchmarks.jar doesn't contain > log4j-layout-template-json plugins due to overrides taking place during > shading. This problem rendered the JsonTemplateLayout benchmarks broken after > JTLs migration to plugins. Using a 3rd party Maven plugin circumventing a > Log4j bug in the Log4j project itself felt pretty unpleasant to me. Is there > any other way I could have solved this?
broken Log4j2Plugins.dat in the shaded benchmarks.jar of log4j-perf
I have done something really nasty in the release-2.x branch to fix benchmarks.jar generated by log4j-perf. Since a picture is worth a thousand words, I am sharing two: [image: image.png] [image: image.png] (In case images get truncated, see commit 4049240c.) In a nutshell, Log4j2Plugins.dat of the shaded benchmarks.jar doesn't contain log4j-layout-template-json plugins due to overrides taking place during shading. This problem rendered the JsonTemplateLayout benchmarks broken after JTLs migration to plugins. Using a 3rd party Maven plugin circumventing a Log4j bug in the Log4j project itself felt pretty unpleasant to me. Is there any other way I could have solved this?