|
Hi All, I spend some time analyzing the communication protocol to find out something related to solution of DERBY-1434. Because I'm not familiar with the Derby communication protocol yet, I would like to get some advice. When client creates multiple connections to different databases (through the JDBC driver), the DRDA protocol 'always' (I'm not sure if always but i have not found any situation when it does not) sends the same PKGNAMCSN block as the one used for a first created connection. The reason of this behaviour is in a creation of the Section object in SectionManager using it's method 'getDynamicSection'. It creates the section by calling the getSection(freeSections[Non]Hold_, packageNameWith[No]Hold__, cursorNamePrefixWith[No]Hold__, resultSetHoldability) which later calls the init method of the Section class with the parameter isGenerated = false. Due to this the buffer which is used to store the PKGNAMCSN is initialized to the value stored in Agent.SectionManager.holdPKGNAMCBytes - this field is declared static so the value is shared among all created connections. The reusing of the value from the buffer is probably only a performance improvement and if the value in a Section object (created with isGenerated = false) is not initialized it is generated on demand and also stored to SectionManager.holdPKGNAMCBytes. I would suggest removing the static modifier from the fields noHoldPKGNAMCBytes and holdPKGNAMCBytes of the org.apache.derby.client.am.SectionManager class. Each Connection objects holds its own Agent object which holds its own SectionManager object. Thus, the PKGNAMCSN blocks will be generated once for each Connection object. Is this right? However, the description of DRDA protocol looks like a PKGNAMCSN block is important to identify the correct server's sql executional package (I'm not an expert, it's only my opinion). How it is possible that sending a wrong PKGNAMCSN does not affect the database behavior? In the demonstration program on JIRA both connections connect to the same server instance. Might connecting these connections to different machines (or only server instances) lead to improper behavior? Why requests with the wrong PKGNAMCSN still work? I'll try two different machines tomorrow (approx. in 16 hours) and let you know. Regards Julius Stroffek |
- DERBY-1434 - Client can send incorrect database name to se... Julius Stroffek
- Re: DERBY-1434 - Client can send incorrect database n... Bryan Pendleton
- Re: DERBY-1434 - Client can send incorrect databa... Julius Stroffek
- Re: DERBY-1434 - Client can send incorrect da... Army
- Re: DERBY-1434 - Client can send incorrec... Bryan Pendleton
- Re: DERBY-1434 - Client can send inc... Julius Stroffek
- Re: DERBY-1434 - Client can send... Bryan Pendleton
