CMDBuild Forum

IT Manager

Buongiorno,

qualche mese fa abbiamo messo in test CMDBuild per gestire gli asset informatici della nostra azienda.

Il prototipo ha avuto successo e si è concluso ottenendo un database popolato ed un insieme di relazioni efficace. A distanza di tempo è stato ripreso in mano il progetto e così ho reinstallato un nuovo server più performante e le ultime release dei vari prodotti (postgres, tomcat ecc)

Avendo però già creato la struttura e le relazioni e soprattutto avendo popolato alcune tabelle decisamente corpose, ci avrebbe fatto comodo poter migrare il db. Cosa che ho provato a fare esportando i dati dal vecchio database (con dumpall) e ricreandolo da backup sul nuovo server.

Presumo possa funzionare tutto, peccato che all'avvio dell'applicazione mi presenti la lista delle patch da installare (cosa inutile, visto che la release installata è l'ultima) e che l'aggiornamento genera un errore SQL.

A questo punto ho provato a modificare i dati nella tabella Patch, sostituendoli con quelli che ho preso da un'installazione ex novo, ma anche qui senza successo.

Come faccio quindi a risolvere il mio problema senza ricreare struttura ed inventario?

 

Grazie in anticipo

Alessandro

Il fatto che, importando in una versione più recente di CMDBuild un database esportato da una versione più vecchia, il sistema tenti di applicare delle patch non è una operazione inutile.

E' anzi una operazione necessaria per aggiornare la struttura del database rispetto ad eventuali meccanismi aggiuntivi previsti dalle nuove implementazioni rilasciate.

Il problema sta semmai nel fatto che applicando le patch venga generato un errore SQL.

Normalmente (cioè su un database dove non siano stati effettuati interventi manuali) questo non succede e non disponendo di ulteriori informazioni è difficile capirne il motivo.

A solo titolo di esempio un intervento manuale che può generare quel problema è la creazione di viste, che per come funziona PostgreSQL potrebbero impedire al "patch manager" di CMDBuild eventuali modifiche alla struttura delle tabelle coinvolte.

 

Fabio

 

 

 

Grazie dell'interessamento. Provo a dare qualche dettaglio in più in modo da agevolare l'analisi:

- Effettuato al tempo dump del db col comando pg_dumpall

- Restorato su nuova istanza di Postgres (col vecchio nome)

- Installato CMDBuild creando contestualmente un db nuovo (con un nuovo nome)

 

A questo punto, semplicemente rinominando il db e riavviando tomcat ottengo di poter usare l'uno o l'altro. Se uso il nuovo tutto ok, se uso il vecchio (che non ha subito alcun intervento manuale a parte il restore) ottengo la lista di patch.

Applicando le patch l'errore esatto in cui incorro è questo:

 

org.cmdbuild.exception.ORMException: ORM_SQL_PATCH
	at org.cmdbuild.exception.ORMException$ORMExceptionType.createException(ORMException.java:59)
	at org.cmdbuild.services.PatchManager.applyPatch(PatchManager.java:157)
	at org.cmdbuild.services.PatchManager.applyPatchList(PatchManager.java:136)
	at org.cmdbuild.servlets.json.Configure.applyPatches(Configure.java:96)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at org.cmdbuild.servlets.JSONDispatcher.dispatch(JSONDispatcher.java:89)
	at org.cmdbuild.servlets.JSONDispatcher.doPost(JSONDispatcher.java:51)
	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:269)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:54)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:28)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:37)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
	at java.lang.Thread.run(Thread.java:636)

Spero che sia utile all'individuazione di una possibile causa e soluzione

Grazie

Alessandro

Previously Tecnoteca wrote:

Il fatto che, importando in una versione più recente di CMDBuild un database esportato da una versione più vecchia, il sistema tenti di applicare delle patch non è una operazione inutile.

E' anzi una operazione necessaria per aggiornare la struttura del database rispetto ad eventuali meccanismi aggiuntivi previsti dalle nuove implementazioni rilasciate.

Il problema sta semmai nel fatto che applicando le patch venga generato un errore SQL.

Normalmente (cioè su un database dove non siano stati effettuati interventi manuali) questo non succede e non disponendo di ulteriori informazioni è difficile capirne il motivo.

A solo titolo di esempio un intervento manuale che può generare quel problema è la creazione di viste, che per come funziona PostgreSQL potrebbero impedire al "patch manager" di CMDBuild eventuali modifiche alla struttura delle tabelle coinvolte.

 

Fabio