Mercurial > hg > icedtea6-hg
changeset 2970:076acbb953a5
Add LogManager regression fixes.
2013-02-17 Andrew John Hughes <gnu.andrew@redhat.com>
* Makefile.am:
(ICEDTEA_PATCHES): Add new patches.
* patches/openjdk/8007393.patch,
* patches/openjdk/8007611.patch:
Regression fixes for LogManager.
author | Andrew John Hughes <gnu.andrew@redhat.com> |
---|---|
date | Wed, 06 Mar 2013 19:28:09 +0000 |
parents | 9389cc43b7b8 |
children | 1ecedefb66fa |
files | ChangeLog Makefile.am patches/openjdk/8007393.patch patches/openjdk/8007611.patch |
diffstat | 4 files changed, 113 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Wed Mar 06 19:22:19 2013 +0000 +++ b/ChangeLog Wed Mar 06 19:28:09 2013 +0000 @@ -1,3 +1,11 @@ +2013-02-17 Andrew John Hughes <gnu.andrew@redhat.com> + + * Makefile.am: + (ICEDTEA_PATCHES): Add new patches. + * patches/openjdk/8007393.patch, + * patches/openjdk/8007611.patch: + Regression fixes for LogManager. + 2013-02-15 Andrew John Hughes <gnu.andrew@redhat.com> * Makefile.am:
--- a/Makefile.am Wed Mar 06 19:22:19 2013 +0000 +++ b/Makefile.am Wed Mar 06 19:28:09 2013 +0000 @@ -473,7 +473,9 @@ patches/traceable.patch \ patches/openjdk/8005615-failure_to_load_logger_implementation.patch \ patches/openjdk/8004341-jck_dialog_failure.patch \ - patches/pr1319-support_giflib_5.patch + patches/pr1319-support_giflib_5.patch \ + patches/openjdk/8007393.patch \ + patches/openjdk/8007611.patch if WITH_ALT_HSBUILD ICEDTEA_PATCHES += \
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/8007393.patch Wed Mar 06 19:28:09 2013 +0000 @@ -0,0 +1,78 @@ + +# HG changeset patch +# User coffeys +# Date 1360860659 0 +# Node ID 828b93329939ec20530ed98f42b2966b2ea53048 +# Parent cff0241d217f7b463d58ddcd0add8d41de9eb280 +8007393: Possible race condition after JDK-6664509 +Reviewed-by: mchung + +--- openjdk/jdk/src/share/classes/java/util/logging/LogManager.java Tue Feb 05 23:33:50 2013 +0000 ++++ openjdk/jdk/src/share/classes/java/util/logging/LogManager.java Thu Feb 14 16:50:59 2013 +0000 +@@ -411,7 +411,40 @@ public class LogManager { + } + + Logger demandSystemLogger(String name, String resourceBundleName) { +- return systemContext.demandLogger(name, resourceBundleName); ++ // Add a system logger in the system context's namespace ++ final Logger sysLogger = systemContext.demandLogger(name, resourceBundleName); ++ ++ // Add the system logger to the LogManager's namespace if not exist ++ // so that there is only one single logger of the given name. ++ // System loggers are visible to applications unless a logger of ++ // the same name has been added. ++ Logger logger; ++ do { ++ // First attempt to call addLogger instead of getLogger ++ // This would avoid potential bug in custom LogManager.getLogger ++ // implementation that adds a logger if not exists ++ if (addLogger(sysLogger)) { ++ // successfully added the new system logger ++ logger = sysLogger; ++ } else { ++ logger = getLogger(name); ++ } ++ } while (logger == null); ++ ++ // LogManager will set the sysLogger's handlers via LogManager.addLogger method. ++ if (logger != sysLogger && sysLogger.getHandlers().length == 0) { ++ // if logger already exists but handlers not set ++ final Logger l = logger; ++ AccessController.doPrivileged(new PrivilegedAction<Void>() { ++ public Void run() { ++ for (Handler hdl : l.getHandlers()) { ++ sysLogger.addHandler(hdl); ++ } ++ return null; ++ } ++ }); ++ } ++ return sysLogger; + } + + // LoggerContext maintains the logger namespace per context. +@@ -619,22 +652,7 @@ public class LogManager { + } + } while (result == null); + } +- // Add the system logger to the LogManager's namespace if not exists +- // The LogManager will set its handlers via the LogManager.addLogger method. +- if (!manager.addLogger(result) && result.getHandlers().length == 0) { +- // if logger already exists but handlers not set +- final Logger l = manager.getLogger(name); +- final Logger logger = result; +- AccessController.doPrivileged(new PrivilegedAction<Void>() { +- public Void run() { +- for (Handler hdl : l.getHandlers()) { +- logger.addHandler(hdl); +- } +- return null; +- } +- }); +- } +- return result; ++ return result; + } + } + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/openjdk/8007611.patch Wed Mar 06 19:28:09 2013 +0000 @@ -0,0 +1,24 @@ + +# HG changeset patch +# User coffeys +# Date 1360861865 0 +# Node ID 25e83b78298b71abb46eb5a337ed7bddef418ca4 +# Parent 828b93329939ec20530ed98f42b2966b2ea53048 +8007611: logging behavior in applet changed +Reviewed-by: mchung + +--- openjdk/jdk/src/share/classes/java/util/logging/LogManager.java Thu Feb 14 16:50:59 2013 +0000 ++++ openjdk/jdk/src/share/classes/java/util/logging/LogManager.java Thu Feb 14 17:11:05 2013 +0000 +@@ -351,7 +351,10 @@ public class LogManager { + context = userContext; + } else { + context = new LoggerContext(); +- context.addLocalLogger(manager.rootLogger); ++ // during initialization, rootLogger is null when ++ // instantiating itself RootLogger ++ if (manager.rootLogger != null) ++ context.addLocalLogger(manager.rootLogger); + } + javaAwtAccess.put(ecx, LoggerContext.class, context); + } +