• Destroying Connection

  • OpenKM has many interesting features, but requires some configuration process to show its full potential.
OpenKM has many interesting features, but requires some configuration process to show its full potential.
Forum rules: Please, before asking something see the documentation wiki or use the search feature of the forum. And remember we don't have a crystal ball or mental readers, so if you post about an issue tell us which OpenKM are you using and also the browser and operating system version. For more info read How to Report Bugs Effectively.
 #12476  by Catscratch
 
Hi,

I got a lot of WARNings.
Code: Select all
2011-10-06 07:07:31,430 WARN  [org.jboss.resource.connectionmanager.JBossManagedConnectionPool] Destroying connection that could not be successfully matched: org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener@412534c7[state=DESTROYED mc=org.jboss.resource.adapter.jdbc.local.LocalManagedConnection@509bbd08 handles=0 lastUse=1317828007540 permit=false trackByTx=false mcp=org.jboss.resource.connectionmanager.JBossManagedConnectionPool$OnePool@4b6b482e context=org.jboss.resource.connectionmanager.InternalManagedConnectionPool@704feab0 xaResource=org.jboss.resource.connectionmanager.TxConnectionManager$LocalXAResource@20978190 txSync=null]
2011-10-06 07:07:31,426 WARN  [org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory] Destroying connection that is not valid, due to the following exception: com.mysql.jdbc.JDBC4Connection@45f1d40f
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 49.643.883 milliseconds ago.  The last packet sent successfully to the server was 49.644.008 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
	at sun.reflect.GeneratedConstructorAccessor264.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
	at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3317)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1938)
	at com.mysql.jdbc.ConnectionImpl.pingInternal(ConnectionImpl.java:4124)
	at com.mysql.jdbc.ConnectionImpl.ping(ConnectionImpl.java:4101)
	at com.mysql.jdbc.StatementImpl.doPingInstead(StatementImpl.java:1525)
	at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1373)
	at com.mysql.jdbc.integration.jboss.MysqlValidConnectionChecker.isValidConnection(MysqlValidConnectionChecker.java:65)
	at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnectionFactory.isValidConnection(BaseWrapperManagedConnectionFactory.java:458)
	at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.checkValid(BaseWrapperManagedConnection.java:322)
	at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.matchManagedConnections(LocalManagedConnectionFactory.java:211)
	at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.getConnection(InternalManagedConnectionPool.java:213)
	at org.jboss.resource.connectionmanager.JBossManagedConnectionPool$BasePool.getConnection(JBossManagedConnectionPool.java:575)
	at org.jboss.resource.connectionmanager.BaseConnectionManager2.getManagedConnection(BaseConnectionManager2.java:347)
	at org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:330)
	at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:402)
	at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:849)
	at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:89)
	at org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:92)
	at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
	at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
	at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:161)
	at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1616)
	at org.hibernate.loader.Loader.doQuery(Loader.java:717)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:270)
	at org.hibernate.loader.Loader.doList(Loader.java:2449)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2192)
	at org.hibernate.loader.Loader.list(Loader.java:2187)
	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
	at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
	at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1258)
	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
	at com.openkm.module.direct.DirectDashboardModule.getTopDocuments(DirectDashboardModule.java:1070)
	at com.openkm.module.direct.DirectDashboardModule.getLastMonthTopModifiedDocuments(DirectDashboardModule.java:953)
	at com.openkm.module.direct.DirectDashboardModule.getLastMonthTopModifiedDocuments(DirectDashboardModule.java:930)
	at com.openkm.api.OKMDashboard.getLastMonthTopModifiedDocuments(OKMDashboard.java:208)
	at com.openkm.servlet.frontend.DashboardServlet.getLastMonthTopModifiedDocuments(DashboardServlet.java:358)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:207)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:243)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Thread.java:662)
Caused by: java.net.SocketException: Broken pipe
	at java.net.SocketOutputStream.socketWrite0(Native Method)
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
	at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
	at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:123)
	at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3298)
	... 65 more
2011
Should I configure Connector/J connection property 'autoReconnect=true' ? And where could I configure this in OpenKM?

Thanks.
 #12493  by jllort
 
Which database are you using ?

Post here for exemple you openkm-ds.xml connection String
 #12500  by Catscratch
 
Code: Select all
<!-- MYSQL DB -->
  <local-tx-datasource>
    <jndi-name>OpenKMDS</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/okm_app?autoReconnect=true</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>********</user-name>
    <password>********</password>
    <min-pool-size>5</min-pool-size>
    <max-pool-size>20</max-pool-size>
    <idle-timeout-minutes>28680</idle-timeout-minutes>
    <exception-sorter-class-name>com.mysql.jdbc.integration.jboss.ExtendedMysqlExceptionSorter</exception-sorter-class-name>
    <valid-connection-checker-class-name>com.mysql.jdbc.integration.jboss.MysqlValidConnectionChecker</valid-connection-checker-class-name>
    <metadata>
        <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
  
  <mbean code="org.jboss.jdbc.HypersonicDatabase" 
         name="jboss:service=Hypersonic,database=OKM_APP">
    <attribute name="Database">OKM_APP</attribute>
    <attribute name="InProcessMode">true</attribute>
  </mbean>
 #12513  by jllort
 
Here seems right, now must revise your configuration into repository.xml and /repository/workspaces/default/workspace.xml
 #12520  by Catscratch
 
Ok, here they are. :-)

repository.xml
Code: Select all
<Repository>
    <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
        <param name="path" value="${rep.home}/repository"/>
    </FileSystem>

    <!-- Security configuration -->
    <Security appName="OpenKM">
        <AccessManager class="com.openkm.core.OKMAccessManager"/>
    </Security>

    <!-- Location of workspaces root directory and name of default workspace -->
    <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>

    <!-- Workspace configuration template -->
    <Workspace name="${wsp.name}">
        <!-- Virtual file system of the workspace -->
        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${wsp.home}"/>
        </FileSystem>
		
		<!-- MySQL -->
		<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager">
          <param name="driver" value="com.mysql.jdbc.Driver"/>
          <param name="url" value="jdbc:mysql://localhost:3306/okm_repo?autoReconnect=true"/>
          <param name="schema" value="mysql"/>
          <param name="user" value="********"/>
          <param name="password" value="********"/>
          <param name="schemaObjectPrefix" value="${wsp.name}_"/>
          <param name="externalBLOBs" value="false"/>
        </PersistenceManager>

        <!-- Search index and the file system it uses. -->
        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
            <param name="path" value="${wsp.home}/index"/>
            <param name="textFilterClasses" value="
            org.apache.jackrabbit.extractor.PlainTextExtractor,
            org.apache.jackrabbit.extractor.MsWordTextExtractor,
            org.apache.jackrabbit.extractor.MsExcelTextExtractor,
            org.apache.jackrabbit.extractor.MsPowerPointTextExtractor,
            org.apache.jackrabbit.extractor.OpenOfficeTextExtractor,
            org.apache.jackrabbit.extractor.RTFTextExtractor,
            org.apache.jackrabbit.extractor.HTMLTextExtractor,
            org.apache.jackrabbit.extractor.XMLTextExtractor,
            org.apache.jackrabbit.extractor.PngTextExtractor,
            org.apache.jackrabbit.extractor.MsOutlookTextExtractor,
            com.openkm.extractor.PdfTextExtractor,
            com.openkm.extractor.AudioTextExtractor,
            com.openkm.extractor.ExifTextExtractor,
            com.openkm.extractor.Tesseract3TextExtractor,
            com.openkm.extractor.SourceCodeTextExtractor,
            com.openkm.extractor.MsOffice2007TextExtractor"/>
            <param name="extractorPoolSize" value="2"/>
            <param name="supportHighlighting" value="false"/>
            <param name="indexingConfiguration" value="${wsp.home}/../../../indexing_configuration.xml"/>
        </SearchIndex>
    </Workspace>

    <!-- Configures the versioning -->
    <Versioning rootPath="${rep.home}/version">
        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${rep.home}/version" />
        </FileSystem>

        <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
          <param name="url" value="jdbc:derby:${rep.home}/version/db;create=true"/>
          <param name="schemaObjectPrefix" value="version_"/>
        </PersistenceManager>
    </Versioning>

    <!-- Search index for content that is shared repository wide
         (/jcr:system tree, contains mainly versions) -->
    <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
        <param name="path" value="${rep.home}/repository/index"/>
        <param name="textFilterClasses" value=""/>
        <param name="extractorPoolSize" value="2"/>
        <param name="supportHighlighting" value="false"/>
    </SearchIndex>

    <!-- DataStore improve file handling performance -->
    <DataStore class="org.apache.jackrabbit.core.data.FileDataStore">
        <param name="path" value="${rep.home}/repository/datastore"/>
        <param name="minRecordLength" value="100"/>
    </DataStore>
</Repository>
Maybe <param name="schema" value="mysql"/> should be something else?


workspace.xml
Code: Select all
<Workspace name="default">
        <!-- Virtual file system of the workspace:
             class: FQN of class implementing the FileSystem interface -->
        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${wsp.home}"/>
        </FileSystem>

        <!-- Persistence manager of the workspace:
             class: FQN of class implementing the PersistenceManager interface -->
        <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
          <param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/>
          <param name="schemaObjectPrefix" value="${wsp.name}_"/>
        </PersistenceManager>

        <!-- Search index and the file system it uses.
             class: FQN of class implementing the QueryHandler interface -->
        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
            <param name="path" value="${wsp.home}/index"/>
            <param name="textFilterClasses" value="             org.apache.jackrabbit.extractor.PlainTextExtractor,             org.apache.jackrabbit.extractor.MsWordTextExtractor,             org.apache.jackrabbit.extractor.MsExcelTextExtractor,             org.apache.jackrabbit.extractor.MsPowerPointTextExtractor,             org.apache.jackrabbit.extractor.OpenOfficeTextExtractor,             org.apache.jackrabbit.extractor.RTFTextExtractor,             org.apache.jackrabbit.extractor.HTMLTextExtractor,             org.apache.jackrabbit.extractor.XMLTextExtractor,             org.apache.jackrabbit.extractor.PngTextExtractor,             org.apache.jackrabbit.extractor.MsOutlookTextExtractor,             com.openkm.extractor.PdfTextExtractor,             com.openkm.extractor.AudioTextExtractor,             com.openkm.extractor.ExifTextExtractor,             com.openkm.extractor.Tesseract3TextExtractor,             com.openkm.extractor.SourceCodeTextExtractor,             com.openkm.extractor.MsOffice2007TextExtractor"/>
            <param name="extractorPoolSize" value="2"/>
            <param name="supportHighlighting" value="false"/>
            <param name="indexingConfiguration" value="${wsp.home}/../../../indexing_configuration.xml"/>
        </SearchIndex>
    </Workspace>
 #12524  by jllort
 
delete ( it's not necessary )
Code: Select all
  <mbean code="org.jboss.jdbc.HypersonicDatabase"
         name="jboss:service=Hypersonic,database=OKM_APP">
    <attribute name="Database">OKM_APP</attribute>
    <attribute name="InProcessMode">true</attribute>
  </mbean>

Other problem is versioning is not stored in Mysql ( other kind of problem, and now is difficult changing it if you're using on production ). Should be configured on Mysql too
Code: Select all
<!-- Configures the versioning -->
    <Versioning rootPath="${rep.home}/version">
        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
            <param name="path" value="${rep.home}/version" />
        </FileSystem>

        <PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
          <param name="url" value="jdbc:derby:${rep.home}/version/db;create=true"/>
          <param name="schemaObjectPrefix" value="version_"/>
        </PersistenceManager>
    </Versioning>
Seems all values are correct
 #12528  by Catscratch
 
Is there a problem if versioning is not stored in MySQL?

And could I change it? I assume all versions are lost, but the documents remain?
 #12536  by jllort
 
That can not be changed on fly, only when upgrading to new repository version, or exporting and importing ( you'll lose in this case history, but with newer exporting tool available at integration.openkm.com what will be the new 5.1.8 you can export all extra folder and document data information ).

I'm not sure that could be the cause of the problem, really you've got version on hypersonic database and document on mysql, that's not good scenario two databases for same system.

You could try exporting importing to new fresh OpenKM version and configure only with Mysql, but before doing anything ensure you've got a full backup. And I suggest this be other installation, don't make changes in actual, build a new and try there.

As I said I don't see anything else wrong in connection. could be a Mysql parameter ( in database configuration, because connection string is correctly ).
 #12539  by Catscratch
 
Can you please describe me the usage of the integration tool? I want to try to change from hypersonic to mysql when the upgrade to 5.1.8 will be released as stable.
 #12576  by jllort
 
You can upgrade now if you want, really can consider integration.openkm.com stable in the way only has been made changes to solve bugs found in version 5.1.7

About how exporting, if you take a look at exporting tool on administration you'll can see new check box to exporting metadata ( really easy ).
 #12613  by Catscratch
 
With integration WAR I got the following error when trying to access the administration tab.
Code: Select all
Application error

Class:	javax.servlet.ServletException
Message:	java.lang.NoClassDefFoundError: com/openkm/extension/frontend/client/widget/stamp/StampToolBarButton
Date:	Mon Oct 17 11:02:43 CEST 2011
best regards.
 #12647  by jllort
 
1- Stop jboss.
2- Delete the folders tmp and work under server/default

Tell us if it solves the problem ?
 #12659  by Catscratch
 
Ok, you're right. It solved the problem.

Now I tried the reconfiguration for mysql versioning. But without success.

Hopefully you may help me. :-)

Here is what I did:
  • Shutdown OpenKM 5.1.7
  • MySQL Backup with MySQLDump
  • Backup of the whole repository folder
  • Replaced OpenKM 5.1.7 WAR with 5.1.8 Integration WAR
  • OpenKM startup
  • Administration->Repository+Metadata export (successfully completed with 100%)
  • Shutdown OpenKM
  • Edit repository.xml and reconfigured version for MySQL usage
  • Startup OpenKM (got some errors on login, but could go to administration)
  • tried to import the exported repository - here I got a lot of "already exists" errors
So I think I have to "clear" the repository before starting up OpenKM and trying to import the exported repository. Right?
How do I clean an existing repository?

Thanks and best regards.
 #12681  by jllort
 
To create new repository simply must delete repository folder, and re-create databases ( msut be empty ) and configure OpenKM.cfg to create. Be care because it'll destroy all your repository information.
 #12692  by Catscratch
 
Ok, I migrated the repository.

After the repository import (I checked the checkbox "metadata") I got every file doubled.
Filename.ext
Filename.ext.json

But the metadata aren't set.

About Us

OpenKM is part of the management software. A management software is a program that facilitates the accomplishment of administrative tasks. OpenKM is a document management system that allows you to manage business content and workflow in a more efficient way. Document managers guarantee data protection by establishing information security for business content.