Un de nos clients se plaint que, sporadiquement, les appels à FileChannel.map
échouent avec un ClosedByInterruptException
. Le Javadoc ne mentionne pas cela comme une possibilité légitime. Est-ce que quelqu'un sait ce qui pourrait se passer ici?Pourquoi obtenons-nous ClosedByInterruptException de FileChannel.map dans Java 1.6?
Cause0: java.nio.channels.ClosedByInterruptException Cause0-StackTrace: at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:184) at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:772)
Quel type d'opérations entraîne une telle interruption? Si je voulais coder un cas de test, que ferais-je? Pourquoi un thread peut-il être interrompu au milieu de la cartographie d'un fichier? Et pour Claire? – bmargulies
Si l'application est multithread, vous devez rechercher les appels #interrupt() qui peuvent interrompre le thread effectuant les opérations d'E/S sur le canal. S'il s'agit d'une application Web ou d'un autre type d'environnement géré, où la gestion des threads n'est pas à la hauteur de votre application (comme un conteneur Servlet/EJB), vous devez rechercher les violations de sécurité des threads. Un autre endroit à regarder est lorsque l'application est en cours d'arrêt ou lorsque le pool de threads est utilisé (Servlet/EJB Container!). Alors soyez conscient de la gestion dynamique de la taille du pool! http://java.sun.com/javase/6/docs/api/java/lang/Thread.html#interrupt() – cafebabe