Problema
Os seguintes erros aparecem nos registros de erro do autor:
22.01.2008 12:54:29 ERRO delivery: Exceção não tratada: com.day.cq.engine.ServiceException: /usr/local/day/cq-4.2/author/data/author/crx/workspaces/live_author/blobs/f6/6a/562772914484980cb2f403e8c920/1.68.0( Muitos arquivos abertos): /usr/local/day/cq-4.2/author/data/author/crx/workspaces/live_author/blobs/f6/6a/562772914484980cb2f403e8c920/1.68.0(muitos arquivos abertos) 23.01.2008 12:37:42 ERRO jmx: IO Descritor de análise de problema para com.day.cq.util.scheduler.Event java.io.FileNotFoundException: /usr/local/day/cq-4.2/author/data/author/bin/classes/com/day/cq /util/scheduler/Event.xml (muitos arquivos abertos)
23.01.2008 12:48:38 ERRO webdav: Falha de colocação: muitos arquivos abertos 23.01.2008 12:48:40 ERRO webdav: Falha de colocação: muitos arquivos abertos 23.01.2008 12:49:14 ERRO webdav: Falha de colocação: muitos arquivos abertos 23.01.2008 12:50:59 ERRO adaptador: Erro ao atualizar o resumo: java.io.FileNotFoundException: /usr/local/day/cq-4.2/author/data/author/crx/workspaces/live_author/blobs/59/94/22047a324f25bb11674aa01a7de7/1.177.0 (muitos arquivos abertos) 23.01.2008 12:50:59 ERRO adaptador: Erro ao atualizar o resumo: java.io.FileNotFoundException: /usr/local/day/cq-4.2/author/data/author/crx/workspaces/live_author/blobs/f3/cf/f4cc11f84023a4f498cc35be08b2/1.177.0 (muitos Abrir arquivos)
Quando esses erros ocorrem, os usuários ainda podem efetuar login no autor. No entanto, a página mostra itens ausentes, Xs vermelhos para imagens e um, portanto, o autor não é utilizável. Então, é necessário matar e reiniciar manualmente os processos do autor.
Solução
Altere esse tipo de código para algo como o seguinte:
tente { InputStream ins = atom.getStream(); layer = new Layer(ins); }catch(Exception e) { // Log: exception } finally { try { if ( ins != null ) { ins.close(); ins = null; } } catch (IOException ex) { // Log: Cannot close input stream. } }
Informações adicionais
Este erro ocorre quando o arquivo contém construções como as seguintes:
layer = new Layer(atom.getStream());
atom.getStream abre um fluxo, mas não fecha o fluxo novamente.