DRDA incorrectly assumes that all SQLExceptions with error code 08004 are 
caused by an authentication failure.
--------------------------------------------------------------------------------------------------------------

                 Key: DERBY-3060
                 URL: https://issues.apache.org/jira/browse/DERBY-3060
             Project: Derby
          Issue Type: Bug
          Components: Network Server
    Affects Versions: 10.3.1.4, 10.4.0.0
            Reporter: Jørgen Løland


DRDAConnThread#getConnFromDatabaseName incorrectly assumes that all 
SQLExceptions with error code 08004 thrown when trying to connect to a database 
are caused by an authentication failure.

DRDAConnThread lines 1295-1296:
------8<------ 
if (sqlState.regionMatches(0,SQLState.LOGIN_FAILED,0,5)) 
    return CodePoint.SECCHKCD_USERIDINVALID;
------>8------


I have added an exception to BasicDatabase#setupConnection with error code 
08004.C.7. The exception is thrown if the connection is refused because the 
database has been booted in slave replication mode. This exception is, however, 
translated into an authentication exception by DRDAConnThread:


When the NetworkServer has already booted a database 'test' in slave 
replication mode, I get the following output from ij:

ij> connect 'jdbc:derby://localhost/test';
ERROR 08004: Connection authentication failure occurred.  Reason: userid or 
password invalid.

If I change the SQL code of the exception to XRE02.C and repeat, I get:

ij> connect 'jdbc:derby://localhost/test';
ERROR XRE02: DERBY SQL error: SQLCODE: -1, SQLSTATE: XRE02, SQLERRMC: Connect 
refused to database 'test' because it is in replication slave mode.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to