Issue Details (XML | Word | Printable)

Key: JRA-12564
Type: Third-party issue Third-party issue
Status: Resolved Resolved
Resolution: Fixed
Priority: Critical Critical
Assignee: Unassigned
Reporter: Jeff Turner [Atlassian]
Votes: 0
Watchers: 2
Operations

Add/Edit UI Mockup to this issue
If you were logged in you would be able to see more operations.
JIRA

Workflows over 4000 characters break in OC4j 10.1.3.x + Oracle - cannot set setBigStringTryClob workaround

Created: 16/Apr/07 02:57 AM   Updated: 24/Nov/08 08:00 PM
Component/s: None
Affects Version/s: None
Fix Version/s: None

Time Tracking:
Not Specified

File Attachments: 1. Java Archive File atlassian-oracle-orion-compat-2.0.jar (2 kB)


Participants: Brian Lane [JIRA Product Manager], Ian Daniel [Atlassian], Jeff Turner [Atlassian], Martin Aparicio and Ted Chen
Since last comment: 31 weeks, 4 days ago
Resolution Date: 24/Nov/08 08:00 PM
Labels:


 Description  « Hide
In our OC4J 10.x installation instructions we tell Oracle users that they need to set the setBigStringTryClob flag, and due to OC4J brokenness, they have to use Atlassian's JDBC wrapper which recognises the setBigStringTryClob flag.

Unfortunately our workaround was written for OC4J 9.x, and doesn't work in 10.1.3.x. Our docs say:

OC4J 10.1.x no longer uses the <data-source> element, but the same property can be set with a <property name="setBigStringTryClob value="true"/>element nested within the <connection-factory> element.

But this doesn't work. Using:

<connection-pool name="JiraPool">
    <connection-factory factory-class="oracle.jdbc.pool.OracleDataSource" user="jiradb" 
                        password="jiradb" url="jdbc:oracle:thin:@127.0.0.1:1521:jiradb">
        <property name="setBigStringTryClob" value="true"/>
        <property name="loginTimeout" value="30"/>
    </connection-factory>
</connection-pool>
<managed-data-source name="JiraPool" jndi-name="jdbc/JiraDS" connection-pool-name="JiraPool"/>

results in this error in 10.1.3.2:

ERROR J2EE DS-00020 Exception setting the property 'setBigStringTryClob' on the DataSource.
Exception: java.lang.IllegalArgumentException: No such property: setBigStringTryClob, existing writable properties are: [TNSEntryName, URL, connectionCacheName, connectionCacheProperties, connectionCachingEnabled, connectionProperties, dataSourceName, databaseName, description, driverType, explicitCachingEnabled, fastConnectionFailoverEnabled, implicitCachingEnabled, logWriter, loginTimeout, maxStatements, networkProtocol, password, portNumber, serverName, serviceName, user]
2007-04-15 23:49:19.865 WARNING J2EE OJR-00107 Exception creating connection pool. Exception: oracle.oc4j.sql.DataSourceException: Exception setting the property 'setBigStringTryClob' on the DataSource. Exception: java.lang.IllegalArgument Exception: No such property: setBigStringTryClob, existing writable properties are: [TNSEntryName, URL, connectionCacheName, connectionCacheProperties, connectionCachingEnabled, connectionProperties, dataSourceName, databaseName, description, driverType, explicitCachingEnabled, fastConnectionFailoverEnabled, implicitCachingEnabled, logWriter, loginTimeout, maxStatements, networkProtocol, password,
portNumber, serverName, serviceName, user]
07/04/15 23:49:19 SEVERE: ApplicationStateRunning.initConnector Error occurred initializing connectors. Exception is: Exception creating connection pool. Exception: oracle.oc4j.sql.DataSourceException: Exception setting the property 'setBigStringTryClob' on the DataSource. Exception: java.lang.IllegalArgumentException: No such property: setBigStringTryClob, existing writable properties are: [TNSEntryName, URL, connectionCacheName, connectionCacheProperties, connectionCachingEnabled, connectionProperties, dataSourceName, databaseName, description, driverType, explicitCachingEnabled, fastConnectionFailoverEnabled, implicitCachingEnabled, logWriter, loginTimeout, maxStatements, networkProtocol, password, portNum ber, serverName, serviceName, user]
07/04/15 23:49:19 SEVERE: ApplicationStateRunning.initConnector Stack trace: oracle.oc4j.sql.DataSourceException: Exception creating connection pool. Exception: oracle.oc4j.sql.DataSourceException: Exception setting the property 'setBigStringTryClob' on the DataSource. Exception: java.lang.IllegalArgumentException: No such property: setBigStringTryClob, existing writable properties are: [TNSEntryName, URL, connectionCacheName, connectionCacheProperties, connectionCachingEnabled, connectionProperties, dataSourceName, databaseName, description, driverType, explicitCachingEnabled, fastConnectionFailoverEnabled, implicitCachingEnabled, logWriter, loginTimeout, maxStatements, networkProtocol, password, portNumber, serverName, serviceName, user]
at com.evermind.server.ApplicationStateRunning.initDataSourceConnectionPool(ApplicationStateRunning.java:2072)
at com.evermind.server.ApplicationStateRunning.initDataSourceConnector(ApplicationStateRunning.java:2017)
at com.evermind.server.ApplicationStateRunning.initConnector(ApplicationStateRunning.java:1272)
....



 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
Ian Daniel [Atlassian] added a comment - 28/Dec/07 12:20 AM
The following Oracle documentation:

implies that the following should work:

<connection-pool name="JiraPool">
  <connection-factory factory-class="oracle.jdbc.driver.OracleDriver"
    user="jirauser"
    password="jirauser"
    url="jdbc:oracle:thin:@myserver:1521:jiradb">
      <connection-properties>
          <property name="setBigStringTryClob" value="true"/>
      </connection-properties>
  </connection-factory>
</connection-pool>

But it doesn't work. JIRA starts, but creating an issue with a description longer than 32K characters (using Oracle 10g) fails.

Same error for capital "S" - that is, "SetBigStringTryClob".

A support customer (JSP-15286) suggested that the following is correct:

<connection-pool name="JiraPool" connectionProperties="setBigStringTryClob=true">
  <connection-factory factory-class="oracle.jdbc.driver.OracleDriver"
    user="jirauser"
    password="jirauser"
    url="jdbc:oracle:thin:@myserver:1521:jiradb">
  </connection-factory>
</connection-pool>

But it doesn't work either. Again, JIRA starts, but creating an issue with a description longer than 32K characters fails. Same error for capital "S" - that is, "SetBigStringTryClob".

So still no workaround for OC4J 10.3.1.x.


Ted Chen added a comment - 09/Jun/08 04:51 AM
A workaround would be not to use a datasource but a direct JDBC-connection (with all its drawbacks...). The Oracle JDBC-Versions 10.1.x still uses setBigStringTryClob. Also see here

Another workaround for the use of datasources could be (untested) to swap the Oracle JDBC-drivers to 10.2.0.x or higher because these drivers handle that clob-stuff internally and setting this property should be obsolet.


Martin Aparicio added a comment - 13/Nov/08 03:16 PM
This was fixed by using the 10.2.0.5 jdbc driver. However, the fix wasn't simply replacing the jdbc jar file in the applib folder. We did this and the 10.1 driver was still showing in the System Info report. We had to add a shared library path to the applib folder in the OC4J instance. After that, the 10.2 jdbc driver was shown on the system info report.

Brian Lane [JIRA Product Manager] added a comment - 24/Nov/08 08:00 PM
From my perspective - this issue is resolved based upon the workarounds in the comments.

As part of our next major release we are looking to no support JIRA with OC4j. Customers who currently use OC4j should consider alternative application servers. Weblogic is also from Oracle (now) and is the application server from Oracle we will focus our testing efforts on.

Regards,

Brian Lane
JIRA Product Manager