[Gvsig_desarrolladores] Re: Exception Too many open files...
Nacho Uve
nachouve en gmail.com
Vie Abr 24 09:12:15 CEST 2009
Muchísimas gracias Fran.
Vamos a ver si podemos si podemos encontrar la solución siguiendo tus
instrucciones.
Un saludo,
Nacho
2009/4/24 Francisco José Peñarrubia <fpenarru en gmail.com>
> Hola Nacho.
>
> Hay un fallo muy viejo (desde la primera versión) que no nos hemos
> preocupado de mirar todavía que puede que esté relacionado con eso. Cuando
> abres un fichero en gvSIG, ArcGIS se queja de que ese fichero está en uso.
> Me parece que solo nos pasaba con ArcGIS, pero no estoy seguro. El fallo
> estaba localizado en el driver de dbf, que se basa en código de una versión
> vieja de Geotools. Yo revisaría el código de la clase
> com.iver.gvsig.fmap.drivers.shp.DbaseFileNIO.java, en el método close().
> Prueba cosas como cambiar el orden:
>
> fin.close();
> channel.close(); => Cerrar primero el channel y luego fin
>
> O algo más elaborado como esto:
>
> if (channel.isOpen()) {
> channel.close();
> }
> if (buffer instanceof MappedByteBuffer) {
> NIOUtilities.clean(buffer);
> }
> buffer = null;
> channel = null;
> charBuffer = null;
> decoder = null;
> header = null;
> row = null;
>
>
> La clase NIOUtilities la puedes ver aquí (es de Geotools):
>
> http://www.koders.com/java/fid2156FC532DCDCD0956AB68E67CF59FE937FD32CB.aspx?s=mdef%3Ainsert
> pero creo que el buffer no es un MappedByteBuffer, así que no sé si
> realmente sirve para algo.
>
> El problema también podría venir por los shx o shp, o incluso los Writers,
> y entonces tendrías que depurar IndexedShapeFile, en el método close(), y
> comprobar que todo se cierra bien.
> Si te animas con esto, aisla primero el problema, y asegurate primero de
> que el problema está en el dbf (edita solo una tabla, no un shapefile) y no
> en el shx o shp.
>
> Suerte, y si lo arreglas, habrás solucionado uno de los más difíciles (en
> mi opinión).
>
> Saludos.
>
> Fran.
>
>
> Nacho Uve escribió:
>
>> Seguimos teniendo muchísmos problemas a causa de exception provocada por
>> el error [1] que dice que hay demasiados ficheros abiertos. Tenemos la
>> sospecha de que es provocado por que getRecordset() deja abiertos los
>> ficheros y no hay manera de que los cierre (incluso aunque se cargue un
>> nuevo proyecto gvp).
>>
>> ¿Hay alguna forma de cerrar dichos ficheros? Si no es así... ¿qué pasos
>> habría que seguir para modificar las clases implicadas?
>>
>> Un saludo,
>> Nacho
>>
>>
>> [1]: com.iver.cit.gvsig.fmap.drivers.DriverIOException:
>> java.io.FileNotFoundException: /var/tmp/micapa.shp (Too many open files) at
>> com.iver.cit.gvsig.fmap.layers.FLyrVect.reload(FLyrVect.java:1313)
>>
>> --
>> Juan Ignacio Varela García (Nacho Uve)
>> Coordinador Grupo de Desarrollo
>> Cartolab - Laboratorio de Ingeniería Cartográfica
>> http://www.cartolab.es
>>
>> ETS Ingeniería de Caminos, Canales y Puertos
>> Universidade da Coruña
>> Campus de Elviña - 15071 A Coruña (España)
>> (34)981167000 ext. 5493
>>
>>
>>
>> El 3 de abril de 2009 14:00, Nacho Uve <nachouve en gmail.com <mailto:
>> nachouve en gmail.com>> escribió:
>>
>>
>> Hola,
>>
>> Estamos creando una extension para gvSIG 1.2 que hace muchos
>> getRecordset() sobre una misma capa vectorial (por ejemplo, en la
>> función isEnabled() para extender la clase Extension).
>> Llega un momento que lanza una serie de exceptions [1]. ¿Puede ser
>> que cada vez que se hace getRecordset quede un archivo abierto?
>> ¿Hay algún modo de cerrarlos?
>>
>> Un saludo,
>> Nacho
>>
>>
>>
>>
>> [1]: com.iver.cit.gvsig.fmap.drivers.DriverIOException:
>> java.io.FileNotFoundException: /var/tmp/micapa.shp (Too many open
>> files)
>> at
>> com.iver.cit.gvsig.fmap.layers.FLyrVect.reload(FLyrVect.java:1313)
>> at
>>
>> es.udc.cartolab.gvsig.navtable.AbstractNavTable.refreshGUI(AbstractNavTable.java:421)
>> at
>>
>> es.udc.cartolab.gvsig.navtable.AbstractNavTable.actionPerformed(AbstractNavTable.java:530)
>> at
>>
>> es.udc.cartolab.gvsig.navforms.TramosForm.actionPerformed(TramosForm.java:684)
>> at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1197)
>> at javax.swing.JComboBox.setSelectedItem(JComboBox.java:561)
>> at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:597)
>> at
>>
>> es.udc.cartolab.gvsig.navforms.TramosForm.fillValues(TramosForm.java:387)
>> at
>>
>> es.udc.cartolab.gvsig.navtable.AbstractNavTable.next(AbstractNavTable.java:224)
>> at
>>
>> es.udc.cartolab.gvsig.navtable.AbstractNavTable.actionPerformed(AbstractNavTable.java:491)
>> at
>>
>> es.udc.cartolab.gvsig.navforms.TramosForm.actionPerformed(TramosForm.java:684)
>> at
>>
>> javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
>> at
>>
>> javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
>> at
>>
>> javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
>> at
>> javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
>> at
>>
>> javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
>> at
>>
>> java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
>> at java.awt.Component.processMouseEvent(Component.java:5517)
>> at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
>> at java.awt.Component.processEvent(Component.java:5282)
>> at java.awt.Container.processEvent(Container.java:1966)
>> at java.awt.Component.dispatchEventImpl(Component.java:3984)
>> at java.awt.Container.dispatchEventImpl(Container.java:2024)
>> at java.awt.Component.dispatchEvent(Component.java:3819)
>> at
>> java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
>> at
>> java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
>> at
>> java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
>> at java.awt.Container.dispatchEventImpl(Container.java:2010)
>> at java.awt.Window.dispatchEventImpl(Window.java:1791)
>> at java.awt.Component.dispatchEvent(Component.java:3819)
>> at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
>> at
>>
>> com.iver.andami.ui.AndamiEventQueue.dispatchEvent(AndamiEventQueue.java:58)
>> at
>>
>> java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
>> at
>>
>> java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
>> at
>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
>> at
>> java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
>> at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
>> Caused by: java.io.FileNotFoundException: /var/tmp/micapa.shp (Too
>> many open files)
>> at java.io.FileInputStream.open(Native Method)
>> at java.io.FileInputStream.<init>(FileInputStream.java:106)
>> at
>>
>> com.iver.cit.gvsig.fmap.drivers.shp.IndexedShpDriver.open(IndexedShpDriver.java:148)
>> at
>>
>> com.iver.cit.gvsig.fmap.drivers.shp.IndexedShpDriver.reload(IndexedShpDriver.java:868)
>> at
>> com.iver.cit.gvsig.fmap.layers.FLyrVect.reload(FLyrVect.java:1296)
>> ... 36 more
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> gvSIG_desarrolladores mailing list
>> gvSIG_desarrolladores en runas.cap.gva.es
>> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>>
>>
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en runas.cap.gva.es
> http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores
>
--
Juan Ignacio Varela García (Nacho Uve)
Coordinador Grupo de Desarrollo
Cartolab - Laboratorio de Ingeniería Cartográfica
http://www.cartolab.es
ETS Ingeniería de Caminos, Canales y Puertos
Universidade da Coruña
Campus de Elviña - 15071 A Coruña (España)
(34)981167000 ext. 5493
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://runas.cap.gva.es/pipermail/gvsig_desarrolladores/attachments/20090424/9e63b8e8/attachment.htm
Más información sobre la lista de distribución gvSIG_desarrolladores