From: Ming F. <min...@ma...> - 2010-12-23 06:59:34
|
Hi, I'm getting an infinite loop when trying to deploy a sample file. I'm following the instructions from the IDE_develop.pdf document using Intellij. The command Iine looks like this. java -Dorg.smartfrog.logger.logStackTrace=true -Dorg.smartfrog.iniFile=smartfrog/bin/default.ini org.smartfrog.SFSystem -a Test1:DEPLOY:org/smartfrog/examples/tutorial/MyPrimTest.sf::: -e I get the output below 2010/12/23 01:47:13:617 EST [WARN ][main] SFCORE_LOG - SmartFrog security is NOT active 2010/12/23 01:47:13:623 EST [DEBUG][main] SFCORE_LOG - No security manager loaded by SmartFrog 2010/12/23 01:47:13:627 EST [DEBUG][main] SFCORE_LOG - Network test localhost: hostname '192.168.1.152', ip '192.168.1.152', [Successful], 0ms 2010/12/23 01:47:13:629 EST [DEBUG][main] SFCORE_LOG - Command Line args: [-a, Test1:DEPLOY:org/smartfrog/examples/tutorial/MyPrimTest.sf:::, -e] 2010/12/23 01:47:13:635 EST [DEBUG][main] SFCORE_LOG - Parsing SFACT: [Test1:DEPLOY:org/smartfrog/examples/tutorial/MyPrimTest.sf:::] 2010/12/23 01:47:13:638 EST [DEBUG][main] SFCORE_LOG - Parsing SFACT results: [ name:Test1, type:DEPLOY, url:org/smartfrog/examples/tutorial/MyPrimTest.sf, resultType:UNDEFINED] 2010/12/23 01:47:14:100 EST [DEBUG][main] HOST "192.168.1.152":sfRunProcess - ProcessCompound 'null' started. But then it goes into an infinite loop. After debugging for a while I think I found the reason. The problem is in org.smartfrog.sfcore.processcompound.PrimHostDeployerImpl.java line 135 if (pc.equals(local)) { Even though pc and local both point to the exact same object, the equals() returns false. The reason is in org.smartfrog.sfcore.prim.PrimImpl.java equals() looks like this public boolean equals(Object o) { if (sfExportRef == null) { return super.equals(o); } else { return sfExportRef.equals(o); } } Therefore the same object will not equal to itself when sfExportRef != null. Is this a bug or is it by design? Thanks, --ming |