From dev-return-20819-apmail-openjpa-dev-archive=openjpa.apache.org@openjpa.apache.org Fri Jul 27 15:25:35 2012 Return-Path: X-Original-To: apmail-openjpa-dev-archive@www.apache.org Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D3CF2DD4A for ; Fri, 27 Jul 2012 15:25:35 +0000 (UTC) Received: (qmail 15177 invoked by uid 500); 27 Jul 2012 15:25:35 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 15091 invoked by uid 500); 27 Jul 2012 15:25:35 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 14756 invoked by uid 99); 27 Jul 2012 15:25:35 -0000 Received: from issues-vm.apache.org (HELO issues-vm) (140.211.11.160) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 27 Jul 2012 15:25:35 +0000 Received: from isssues-vm.apache.org (localhost [127.0.0.1]) by issues-vm (Postfix) with ESMTP id E825F142856 for ; Fri, 27 Jul 2012 15:25:34 +0000 (UTC) Date: Fri, 27 Jul 2012 15:25:34 +0000 (UTC) From: "Albert Lee (JIRA)" To: dev@openjpa.apache.org Message-ID: <1841414878.110734.1343402734952.JavaMail.jiratomcat@issues-vm> In-Reply-To: <1345364314.109997.1343383414775.JavaMail.jiratomcat@issues-vm> Subject: [jira] [Updated] (OPENJPA-2243) Deadlock involving FormatPreservingProperties MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/OPENJPA-2243?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Albert Lee updated OPENJPA-2243: -------------------------------- Attachment: OPENJPA-2243.patch > Deadlock involving FormatPreservingProperties > --------------------------------------------- > > Key: OPENJPA-2243 > URL: https://issues.apache.org/jira/browse/OPENJPA-2243 > Project: OpenJPA > Issue Type: Bug > Components: lib > Affects Versions: 2.2.0 > Environment: All environments > Reporter: Michael Pradel > Attachments: OPENJPA-2243.patch > > > FormatPreservingProperties extends Properties, which is a thread-safe class, but it does not preserve the thread safety. This leads to surprising deadlocks if you have a reference of type Properties, because it may turn out to be not thread-safe (despite being documented as such). > Here's a simplified example that shows how we hit this bug: > final Properties p1 = new Properties(); > final Properties p2 = createPropsWithDefault(p1); > p2.put(p2, p2); > > Thread t1 = new Thread(new Runnable() { > public void run() { p2.remove(p1); } > }); > Thread t2 = new Thread(new Runnable() { > public void run() { p2.stringPropertyNames(); } > }); > t1.start(); > t2.start(); > try { t1.join(); t2.join(); > } catch (InterruptedException e) { e.printStackTrace(); } > Properties createPropsWithDefault(Properties p) { > // return new Properties(p); // OK > return new FormatPreservingProperties(p); // leads to deadlock > } > If createPropsWithDefault() returns Properties, everything is OK (as it should be, because Properties is thread-safe). However, if it returns FormatPreservingProperties, we occasionally get a deadlock. > Are you aware of this inconsistency? It seems that the safest way of extending Properties is to make methods that override synchronized methods synchronized. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira