History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

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

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: 09/Jun/08 04:51 AM
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: Ian Daniel [Atlassian], Jeff Turner [Atlassian] and Ted Chen
Since last comment: 5 weeks, 5 days ago
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] - 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 - 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.