I think this is fixed in svn. I'm on holiday and cannot check... Stephen On 29/04/2011, Hiller, Dean (Contractor) <dean.hil...@broadridge.com> wrote: > Proof is below. The main summary is that DateTimeFieldType.java has NO > hashCode method so returns different hashcodes in different JVMs > L.....and AbstractPartialDate's hashCode calls that hashCode which > varies from JVM to JVM so two dates that are equal become unequal. It > works in a single JVM since there is only one instance of > DateTimeFieldType in a JVM. First bug I hit in joda time after using it > for about 2 years(still way better than the jdk time api ;) ). > > > > I have the following code to log what the LocalDate(or rather > AbstractPartialDate) is doing in it's hashCode method > > > > It turns out the hashcode of the dt.getFieldType(i)(year, monthOfYear > and date are all different) returns different values on the different > servers!!!! Ouch!!!! > > > > This email is html color coded from eclipse copy so not sure if you can > read it???..... > > > > log.info("Resolver: saving rdbms key=" + overallKey > > + " hash1=" + pk.getAccountId().hashCode() + " hash2=" > > + pk.getMarketvalueDt().hashCode()); > > > > LocalDate dt = pk.getMarketvalueDt(); > > > > for (int i = 0; i < dt.size(); i++) { > > int val = dt.getValue(i); > > int typeHash = dt.getFieldType(i).hashCode(); > > log.info("type=" + dt.getFieldType(i) + " hashVal=" + val > > + " hashType=" + typeHash); > > } > > log.info("hash=" + dt.getChronology().hashCode()); > > > > Log from server 1.... > > > > 2011-04-29 13:41:53,209 INFO [Function Execution Processor1] > c.b.p.p.KeyMappingR > > esolution > > : Resolver: saving rdbms key=RdbmsKey > [rdbmsClass=com.broadridge.papr.olddb.marketvalue.ETLMvAccountDbo, > rdbmsKey=MvAccountPK [accountId=18487, marketvalueDt=2011-01-12]] > hash1=18487 hash2=-77876543 > > 2011-04-29 13:41:53,209 INFO [Function Execution Processor1] > c.b.p.p.KeyMappingResolution > > : type=year hashVal=2011 hashType=20028211 > > 2011-04-29 13:41:53,209 INFO [Function Execution Processor1] > c.b.p.p.KeyMappingResolution > > : type=monthOfYear hashVal=1 hashType=1235672037 > > 2011-04-29 13:41:53,209 INFO [Function Execution Processor1] > c.b.p.p.KeyMappingResolution > > : type=dayOfMonth hashVal=12 hashType=1773059369 > > 2011-04-29 13:41:53,209 INFO [Function Execution Processor1] > c.b.p.p.KeyMappingResolution > > : hash=885211 > > > > Log from server 2 > > > > 2011-04-29 13:41:53,210 INFO [PartitionedRegion Message Processor1] > c.b.p.p.KeyMappingResolution > > : Resolver: saving rdbms key=RdbmsKey > [rdbmsClass=com.broadridge.papr.olddb.marketvalue.ETLMvAccountDbo, > rdbmsKey=MvAccountPK [accountId=18487, marketvalueDt=2011-01-12]] > hash1=18487 hash2=-1292312838 > > 2011-04-29 13:41:53,210 INFO [PartitionedRegion Message Processor1] > c.b.p.p.KeyMappingResolution > > : type=year hashVal=2011 hashType=1905251818 > > 2011-04-29 13:41:53,210 INFO [PartitionedRegion Message Processor1] > c.b.p.p.KeyMappingResolution > > : type=monthOfYear hashVal=1 hashType=438644709 > > 2011-04-29 13:41:53,210 INFO [PartitionedRegion Message Processor1] > c.b.p.p.KeyMappingResolution > > : type=dayOfMonth hashVal=12 hashType=2137747659 > > 2011-04-29 13:41:53,210 INFO [PartitionedRegion Message Processor1] > c.b.p.p.KeyMappingResolution > > : hash=885211 > > > > > > From: Hiller, Dean (Contractor) > Sent: Friday, April 29, 2011 1:32 PM > To: 'joda-interest@lists.sourceforge.net' > Subject: hashCode on LocalDate failed in this instance > > > > We are using a nosql platform in which we shipped a LocalDate to another > server. The hashCode of LocalDate on the other server was different than > the one on my local server. I am still not why. The toString spit out > the exact same date AND on my local server when I serialize/deserialize, > the hashCode was still the same. It was only when I serialized the > LocalDate to another server and called hashcode that I received a > different result even though the toString is the exact same date on both > nodes. > > > > Is LocalDate grabbing some different timezone from the local computer > instead of serializing and sending that date. All of this comes from > simple new LocalDate().plusOrMinusXXX(int x) calls. We don't use any > timezone stuff at this point though. > > > > Thanks, > > Dean > > > > > This message and any attachments are intended only for the use of the > addressee and > may contain information that is privileged and confidential. If the reader > of the > message is not the intended recipient or an authorized representative of the > intended recipient, you are hereby notified that any dissemination of this > communication is strictly prohibited. If you have received this > communication in > error, please notify us immediately by e-mail and delete the message and any > attachments from your system. >
------------------------------------------------------------------------------ WhatsUp Gold - Download Free Network Management Software The most intuitive, comprehensive, and cost-effective network management toolset available today. Delivers lowest initial acquisition cost and overall TCO of any competing solution. http://p.sf.net/sfu/whatsupgold-sd _______________________________________________ Joda-interest mailing list Joda-interest@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/joda-interest