Yes, it appears a fix is already in svn, thanks! Dean -----Original Message----- From: Stephen Colebourne [mailto:scolebou...@joda.org] Sent: Sunday, May 01, 2011 1:10 PM To: Discussion of the Joda project Cc: Vermuelen, Paul (Contractor); Tim Dalsing; Sivanesan, Om (Contractor) Subject: Re: [Joda-interest] more detail/proof on hashCode failure ofLocalDate
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 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