[wildfly-dev] Heads up on JBoss Logger 3.2 : more changed than what it looks like
Eduardo Sant'Ana da Silva
eduardo.santanadasilva at gmail.com
Sat Feb 28 10:25:41 EST 2015
I was wondering if just adding a new method to the BasicLogger interface could resolve the problem.
void debugf(String format, Integer arg);
void debugf(String format, Long arg);
Correct me if I'm wrong, but the problem reported was a collateral effect of the the addition of :
void debugf(String format, int arg);
void debugf(String format, long arg);
https://github.com/jboss-logging/jboss-logging/blob/master/src/main/java/org/jboss/logging/BasicLogger.java
This was added last September, and with the additions of the Integer and Long types, the autoboxing will resolve our problems, and not cast will be necessary.
int i = 123;
bl.debugf( "Number: %d", i );
>> void debugf(String format, int arg);
Integer i = 123;
bl.debugf( "Number: %d", i );
>> void debugf(String format, Integer param1);
Object i = new Integer(123);
bl.debugf( "Number: %d", i );
>> void debugf(String format, Object param1);
(same thing to Long type)
Since debugf methods are inherited from BasicLogger.
On Feb 27, 2015, at 8:50 PM, James R. Perkins <jperkins at redhat.com> wrote:
> We faced some odd compile errors with JDK 7 when we switched WildFly
> Core to 3.2.1.Final. Really the only way to get around it would be to
> cast int's or long's to their object types. Though that's not really
> ideal either I realize.
>
> That said it should be fine in WildFly 9 as we're using 3.2.1.Final now.
>
> On 02/27/2015 12:08 PM, Sanne Grinovero wrote:
>> Hi all,
>> today I've upgraded jboss-logging from version 3.1.4.GA to 3.2.1.Final
>> in an Hibernate project, and got some integration test failures.
>>
>> The surprising aspect is that everything seemed fine at compile level:
>> just switch the version in the pom, and without needing any further
>> changes it compiles fine and runs all unit tests successfully.. but
>> fails when using the freshly built libraries in WildFly 8.2.
>>
>> It's not a regression of jboss-logging, but one of its improvements
>> require a bit of attention.
>>
>> This is what happened to us:
>> we have some log statements which look like this in source code (after
>> simplifying):
>>
>> int i = ...
>> log.debugf( "Number: %d", i );
>>
>> This does of course compile fine in both old an new versions of JBoss
>> Logger. And it all works as expected in unit tests.
>> But when deploying the modified version of this Hibernate library in
>> WildFly 8.2, you'd get some of these:
>> - java.lang.NoSuchMethodError:
>> org.hibernate.search.util.logging.impl.Log.debugf(Ljava/lang/String;J)V"}}
>>
>> When using the older version of JBoss Logger (at compile time), the
>> above line of code is compiled as an invocation to:
>>
>> void debugf(String format, Object param1);
>>
>> (which is a method present in both versions)
>>
>> When using the new version of JBoss Logger (at compile time), the same
>> line of code is interpreted as the (better) invocation to:
>>
>> void debugf(String format, int arg);
>>
>> So that's what the library is going to invoke at runtime - and that
>> method doesn't exist in WildFly 8.2.
>>
>> Be aware of this when upgrading as it might look like a trivial
>> version bump but it makes it quite hard to guarantee backwards
>> compatibility with older versions of the logger.
>>
>> Personally since I want to upgrade the logger but don't want to drop
>> compatibility with existing WildFly releases, I'm trying to figure how
>> to reliably validate that no logging statement is going to invoke one
>> of the new ones.. for now.
>>
>> I guess this also means that users won't actually benefit from the
>> better performance of the new logging methods until we recompile all
>> of its client libraries using the new version ;-)
>> Auto-boxing is evil..
>>
>> Sanne
>> _______________________________________________
>> wildfly-dev mailing list
>> wildfly-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/wildfly-dev
>
> --
> James R. Perkins
> JBoss by Red Hat
>
> _______________________________________________
> wildfly-dev mailing list
> wildfly-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/wildfly-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/wildfly-dev/attachments/20150228/65b43a84/attachment-0001.html
More information about the wildfly-dev
mailing list