Thread: unpredictable behavior

unpredictable behavior

From
Nadeem Bitar
Date:
I am running postgresql  7.3 on fedora core1. The database encoding is
euc-jp.
I have unit tests that test my persistence code what is troubling is
that the tests fail with the exception listed below but if I rerun the
same tests they pass. Out of 10 runs, 8 would pass and 2 would fail.
Any idea why the behavior is not consistent? I would rather that they
always fail.

 End of Stack Trace
    [junit] ]; nested exception is:
    [junit]     Something unusual has occured to cause the driver to
fail. Please report this exception: Exception: java.lang.
IllegalArgumentException
    [junit] Stack Trace:

    [junit] java.lang.IllegalArgumentException
    [junit]     at java.nio.Buffer.position(Buffer.java:218)
    [junit]     at java.nio.charset.CharsetDecoder.decode
(CharsetDecoder.java:575)
    [junit]     at java.lang.StringCoding$CharsetSD.decode(StringCoding.
java:186)
    [junit]     at java.lang.StringCoding.decode(StringCoding.java:224)
    [junit]     at java.lang.StringCoding.decode(StringCoding.java:230)
    [junit]     at java.lang.String.<init>(String.java:371)
    [junit]     at org.postgresql.jdbc1.AbstractJdbc1Connection.
openConnection(AbstractJdbc1Connection.java:226)
    [junit]     at org.postgresql.Driver.connect(Driver.java:122)



Re: unpredictable behavior

From
Kris Jurka
Date:

On Thu, 5 Feb 2004, Nadeem Bitar wrote:

> I am running postgresql  7.3 on fedora core1. The database encoding is
> euc-jp.
> I have unit tests that test my persistence code what is troubling is
> that the tests fail with the exception listed below but if I rerun the
> same tests they pass. Out of 10 runs, 8 would pass and 2 would fail.
> Any idea why the behavior is not consistent? I would rather that they
> always fail.
>
>  End of Stack Trace
>     [junit] ]; nested exception is:
>     [junit]     Something unusual has occured to cause the driver to
> fail. Please report this exception: Exception: java.lang.
> IllegalArgumentException
>     [junit] Stack Trace:
>
>     [junit] java.lang.IllegalArgumentException
>     [junit]     at java.nio.Buffer.position(Buffer.java:218)
>     [junit]     at java.nio.charset.CharsetDecoder.decode
> (CharsetDecoder.java:575)
>     [junit]     at java.lang.StringCoding$CharsetSD.decode(StringCoding.
> java:186)
>     [junit]     at java.lang.StringCoding.decode(StringCoding.java:224)
>     [junit]     at java.lang.StringCoding.decode(StringCoding.java:230)
>     [junit]     at java.lang.String.<init>(String.java:371)
>     [junit]     at org.postgresql.jdbc1.AbstractJdbc1Connection.
> openConnection(AbstractJdbc1Connection.java:226)
>     [junit]     at org.postgresql.Driver.connect(Driver.java:122)
>

I can see why this is failing, but I have not been able to duplicate it.
It is trying to turn the md5 salt into a String.  The problem is that
random bytes don't always make a string depending on your encoding (which
I'd be interested to know.)  I've attached a patch to the 7.4 driver which
I believe should fix this problem.  I've also put a prebuilt version of
this up at

http://www.ejurka.com/pgsql/jars/pg74jdbc3-nadeem-bitar.jar

Please let me know your jvm encoding and if this fixes the problem.

Kris Jurka

Attachment