2017-09-27 8 views
1

Je reçois cette erreur lors de la migration du contenu d'un référentiel alfresco vers un autre.Exception lors de la migration du contenu alfresco, Trop de fichiers ouverts

Et je reçois cette erreur sur les journaux du serveur de production en direct.

Et aussi le serveur est en baisse pendant la migration.

Quelqu'un peut-il s'il vous plaît m'aider à résoudre ce problème ou toute suggestion est là pour éviter ce problème.

Toute aide ou remarque sera appréciée. Merci d'avance.

J'ai écrit ci-dessous le code extrait

ContentStream contentStream = new ContentStreamImpl("content." + FilenameUtils.getExtension(fileName), 
      BigInteger.valueOf(fileName.length()), new MimetypesFileTypeMap().getContentType(newfile), doc.getContentStream().getStream()); 

J'ai 2 repositorys, utilisant le code ci-dessus je lis flux de contenu de la source et la création de nouveaux fichiers dans le dépôt cible et en ajoutant le flux de contenu. Mais je n'ai trouvé aucun moyen de fermer le flux de contenu.

Veuillez trouver ci-dessous le journal des erreurs pour plus de détails.

java.net.SocketException: Trop de fichiers ouverts à java.net.PlainSocketImpl.socketAccept (Native Method)

+2

double possible de [Java Too Many Open Files] (https://stackoverflow.com/questions/4289447/java-too-many-open-files) – Akah

+0

Actuellement, j'utilise l'API CMIS, et là je n'utilise aucun objet d'écriture –

+0

Désolé, mais votre question n'était pas claire pour moi. Je n'étais pas sûr que vous saviez ce qu'est un "trop ​​de problème de fichier ouvert". Pourriez-vous expliquer ce que vous entendez par migration et ce que vous faites exactement? Pourriez-vous surveiller vos fichiers système ouverts, pour voir si vous avez une fuite, ou simplement que votre mécanisme de migration utilise trop de ressources système? – Akah

Répondre

1

Si vous utilisez la méthode DotCMIS GetContentStream du côté client, assurez-vous de toujours fermer la flux - même si vous ne le lisez pas. Sinon, le socket sur le serveur reste ouvert. Selon votre application, le client et/ou le serveur peuvent manquer de sockets.

Fermeture du flux fonctionne comme ceci:

IContentStream contentStream = document.GetContentStream(); 
Stream stream = contentStream.Stream; 

... do something with the stream ... 

stream.Close(); 
+0

Merci @Florian Muller C'est ce que je fais. Pouvez-vous s'il vous plaît m'aider à fermer le flux. Parce que j'ai essayé à mon niveau mais je n'ai trouvé aucun moyen de fermer le flux. –

+0

S'il vous plaît modifier la réponse si possible .. –

+0

@DeepakTalape s'il vous plaît partager votre code dans votre question. – Akah