[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