gvSIG bugs #4797

Spatialite: Error al seleccionar geometrías

Added by Cesar Martinez Izquierdo over 6 years ago. Updated over 4 years ago.

Status:Closed% Done:

0%

Priority:NormalSpent time:-
Assignee:-
Category:Database
Target version:2.5.0-2914 (rev. org.gvsig.desktop-2.0.242)
Severity:Minor Add-on version:
gvSIG version:2.4.0 Add-on build:
gvSIG build: Add-on resolve version:
Operative System: Add-on resolve build:
Keywords: Proyecto:
Has patch: Hito:
Add-on name:Unknown

Description

Si cargo una capa Spatialite en la vista y justo después intento seleccionar alguna geometría en la vista, se produce un error:

java.lang.RuntimeException: Can't perform operation 'CountOperation'.
    at org.gvsig.fmap.dal.store.jdbc2.spi.operations.AbstractConnectionOperation.perform(AbstractConnectionOperation.java:45)
    at org.gvsig.fmap.dal.store.jdbc2.spi.JDBCStoreProviderBase$CountValue.calculate(JDBCStoreProviderBase.java:86)
    at org.gvsig.fmap.dal.store.jdbc2.spi.JDBCStoreProviderBase$CountValue.get(JDBCStoreProviderBase.java:97)
    at org.gvsig.fmap.dal.store.jdbc2.spi.JDBCStoreProviderBase$CountValue.get(JDBCStoreProviderBase.java:71)
    at org.gvsig.fmap.dal.store.jdbc2.spi.JDBCStoreProviderBase.getFeatureCount(JDBCStoreProviderBase.java:322)
    at org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore.getFeatureCount(DefaultFeatureStore.java:2431)
    at org.gvsig.fmap.dal.feature.impl.DefaultFeatureReferenceSelection.getData(DefaultFeatureReferenceSelection.java:330)
    at org.gvsig.fmap.dal.feature.impl.DefaultFeatureReferenceSelection.select(DefaultFeatureReferenceSelection.java:147)
    at org.gvsig.fmap.dal.feature.impl.DefaultFeatureSelection.select(DefaultFeatureSelection.java:337)
    at org.gvsig.fmap.dal.feature.impl.DefaultFeatureSelection.select(DefaultFeatureSelection.java:441)
    at org.gvsig.fmap.dal.feature.impl.DefaultFeatureSelection.select(DefaultFeatureSelection.java:471)
    at org.gvsig.fmap.dal.feature.impl.DefaultFeatureSelection.select(DefaultFeatureSelection.java:446)
    at org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore.setSelection(DefaultFeatureStore.java:813)
    at org.gvsig.fmap.dal.feature.impl.DefaultFeatureStore.setSelection(DefaultFeatureStore.java:764)
    at org.gvsig.fmap.mapcontrol.tools.PointSelectionListener.point(PointSelectionListener.java:93)
    at org.gvsig.app.project.documents.view.toolListeners.PointSelectListener.point(PointSelectListener.java:58)
    at org.gvsig.fmap.mapcontrol.tools.Behavior.PointBehavior.mouseReleased(PointBehavior.java:94)
    at org.gvsig.fmap.mapcontrol.tools.CompoundBehavior.mouseReleased(CompoundBehavior.java:294)
    at org.gvsig.fmap.mapcontrol.MapControl$MapToolListener.mouseReleased(MapControl.java:1777)
    at java.awt.Component.processMouseEvent(Component.java:6535)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
    at java.awt.Component.processEvent(Component.java:6300)
    at java.awt.Container.processEvent(Container.java:2236)
    at java.awt.Component.dispatchEventImpl(Component.java:4891)
    at java.awt.Container.dispatchEventImpl(Container.java:2294)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
    at java.awt.Container.dispatchEventImpl(Container.java:2280)
    at java.awt.Window.dispatchEventImpl(Window.java:2750)
    at java.awt.Component.dispatchEvent(Component.java:4713)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.awt.EventQueue$4.run(EventQueue.java:729)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at org.gvsig.andami.ui.AndamiEventQueue.dispatchEvent(AndamiEventQueue.java:50)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: org.sqlite.SQLiteException: [SQLITE_BUSY]  The database file is locked (database is locked)
    at org.sqlite.core.DB.newSQLException(DB.java:909)
    at org.sqlite.core.DB.newSQLException(DB.java:921)
    at org.sqlite.core.DB.throwex(DB.java:886)
    at org.sqlite.core.DB.exec(DB.java:155)
    at org.sqlite.jdbc3.JDBC3Connection.setAutoCommit(JDBC3Connection.java:164)
    at org.apache.commons.dbcp.DelegatingConnection.setAutoCommit(DelegatingConnection.java:331)
    at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.setAutoCommit(PoolingDataSource.java:317)
    at org.gvsig.fmap.dal.store.jdbc2.spi.operations.AbstractConnectionOperation.perform_operation(AbstractConnectionOperation.java:67)
    at org.gvsig.fmap.dal.store.jdbc2.spi.operations.AbstractConnectionOperation.perform(AbstractConnectionOperation.java:41)
    ... 50 more

Si reintento la selección, a veces se repito el error, pero otras veces funciona correctamente. Si hago alguna otra operación (zoom, abrir la tabla, seleccionar en la tabla, etc) antes de seleccionar las geometrías en la vista, parece funcionar correctamente.

Me sucede tanto en la revisión gvsig-sqlite:r133 como la gvsig-sqlite:r136 del SVN del proyecto Spatialite.

Pasos para reproducirlo:
  • cargamos una capa Spatialite en la vista
  • seleccionamos la capa en el TOC
  • seleccionamos la herramienta para seleccionar geometrías de la vista
  • pinchamos sobre una geometría

No estoy seguro, pero creo que el problema es que en ResultSetEntryBase(ResulSetControlerBase).create (líneas 183-199) se crea una transacción para el Resulset. Más adelante se hace una CountOperation pero el resultset sigue abierto, por lo que la transacción del resultset sigue activa y la nueva transacción del CountOperation falla.

History

#1 Updated by Joaquín del Cerro Murciano over 6 years ago

  • Description updated (diff)

#2 Updated by Joaquín del Cerro Murciano over 6 years ago

  • Description updated (diff)

#3 Updated by Joaquín del Cerro Murciano over 6 years ago

  • Target version set to 2.4.0-2850-final (rev. org.gvsig.desktop-2.0.220)

#4 Updated by Álvaro Anguix over 6 years ago

  • Target version changed from 2.4.0-2850-final (rev. org.gvsig.desktop-2.0.220) to 2.5.1-3044

#5 Updated by Álvaro Anguix about 5 years ago

  • Category set to Database

#6 Updated by Óscar Martínez about 5 years ago

  • Target version changed from 2.5.1-3044 to 2.5.0-2914 (rev. org.gvsig.desktop-2.0.242)

#7 Updated by Joaquín del Cerro Murciano about 5 years ago

  • Status changed from New to Fixed

#8 Updated by Álvaro Anguix over 4 years ago

  • Status changed from Fixed to Closed

Also available in: Atom PDF