Return-Path: X-Original-To: apmail-felix-dev-archive@www.apache.org Delivered-To: apmail-felix-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 554231831A for ; Fri, 21 Aug 2015 07:38:52 +0000 (UTC) Received: (qmail 70548 invoked by uid 500); 21 Aug 2015 07:38:47 -0000 Delivered-To: apmail-felix-dev-archive@felix.apache.org Received: (qmail 70236 invoked by uid 500); 21 Aug 2015 07:38:46 -0000 Mailing-List: contact dev-help@felix.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@felix.apache.org Delivered-To: mailing list dev@felix.apache.org Received: (qmail 70139 invoked by uid 99); 21 Aug 2015 07:38:46 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 21 Aug 2015 07:38:46 +0000 Date: Fri, 21 Aug 2015 07:38:46 +0000 (UTC) From: "Pierre De Rop (JIRA)" To: dev@felix.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (FELIX-4984) Issues in CircularReferenceTest 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/FELIX-4984?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14706347#comment-14706347 ] Pierre De Rop commented on FELIX-4984: -------------------------------------- I just tested the patch and the problem seems to be resolved: - Under bndtools, I ran 50 successful times the CircularReferenceTest (under bndtools). - Ran all tests successfully under bndtools. - Ran all tests with "gradle org.apache.felix.dependencymanager.ds.itest:check". Please give me some time so I can fully understand the patch (I will study it this week-end). Currently, I tend to agree with the fact that it might be necessary to ensure that all references are satisfied before scheduling the "bind later" tasks (I need to study the patch). thanks ! > Issues in CircularReferenceTest > ------------------------------- > > Key: FELIX-4984 > URL: https://issues.apache.org/jira/browse/FELIX-4984 > Project: Felix > Issue Type: Bug > Components: Declarative Services (SCR) > Reporter: Pierre De Rop > Priority: Minor > Fix For: scr-2.0.2 > > Attachments: felix-4984.diff, org.apache.felix.scr.integration.CircularReferenceTest.test_A11_B0n_delayed_B_first.log > > > This issue is described in the dev mailing list, in http://www.mail-archive.com/dev@felix.apache.org/msg37281.html > while working on FELIX-4955, I sometimes have the CircularReferenceTest failing. > Everything is located in my sandbox, in http://svn.apache.org/repos/asf/felix/sandbox/pderop/dependencymanager.ds/ > To reproduce the test: > install eclipse Mars > install latest bndtools using "install new software" from Eclipse, and then add latest stable release from http://dl.bintray.com/bndtools/bndtools/latest/ > install a java8 runtime (I'm using oracle java8 1.8.0_45, 64 bit version). The whole new dependencymanager.ds project is intented to be build in java8. > checkout my sandbox: > $ svn checkout http://svn.apache.org/repos/asf/felix/sandbox/pderop/dependencymanager.ds > go to "dependencymanager.ds" directory: > $ cd dependencymanager.ds/ > due to a pending issue, you have to first build the DM bnd annotation plugin before importing the project into eclipse. to do so, just type: > $ ./gradlew org.apache.felix.dependencymanager.annotation:jar > now launch eclipse and use the the dependencymanager/ds directory as the workspace dir for Eclipse. > switch to BndTools perpective. > import the bndtools project into eclipse: Import -> Existing Projects into Workspace -> Browse -> select dependencymanager.ds directory (it is proposed by default). > normally, and hopefully, everything should compile fine. Junit tests are left in org.apache.felix.dependencymanager.ds/ directory and integration tests are located in org.apache.felix.dependencymanager.ds.itest/ directory. > Open under Eclipse the org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/CircularReferenceTest.java > I slightly modified it in order to dump stack traces when A component is bound multiple times to the same B instance. > (I believe that only delayed components are concerned by the issue). > For example, in the test_A11_B0n_delayed_A_first() method, I added a call to "assertABoundToOneB(a)" like this: > {code} > @Test > public void test_A11_B0n_delayed_A_first() throws InvalidSyntaxException > { > String componentNameA = "4.1.A.1.1.dynamic"; > final ComponentConfigurationDTO componentA = findComponentConfigurationByName( componentNameA, ComponentConfigurationDTO.SATISFIED ); > String componentNameB = "4.1.B.0.n.dynamic"; > final ComponentConfigurationDTO componentB = findComponentConfigurationByName( componentNameB, ComponentConfigurationDTO.SATISFIED ); > delay(); > A a = getServiceFromConfiguration(componentA, A.class); > assertABoundToOneB(a); > delay(); //async binding of a to b after circular ref detected > B b = getServiceFromConfiguration(componentB, B.class); > assertEquals( 1, b.getAs().size() ); > } > {code} > the "assertABoundToOneB(a)" call does this: > {code} > private void assertABoundToOneB(A a) { > if (a.getBs().size() != 1) { > System.err.println("detected problem ..."); > a.dumpStackTracesWhenBWasBound(); > } > assertEquals( 1, a.getBs().size()); > } > {code} > And stacktraces will be dumped in order to determine why A was bound two times to the same B instance. > it's possible that you have to run several times the "CircularReferenceTest" test before having a failure (and some stacktraces). > Thanks. -- This message was sent by Atlassian JIRA (v6.3.4#6332)