Ir para conteúdo
  • Cadastre-se

desdobrar

Membros
  • Total de ítens

    22
  • Registro em

  • Última visita

Posts postados por desdobrar

  1. 27 minutos atrás, Daniel Simoes disse:

    Você teria que fazer um launcher que escreve esse script dinamicamente...

    Ja experimentou executar o serviço em um Linux com servidor X instalado?

    Estamos trabalhando para remover as dependências gráficas da ACBrLib, que são injetadas devido o gerador de relatórios que usamos... mas isso deve levar algum tempo

    joia, ainda nao.

    bacana se eliminar essas dependências gráficas ficará top de mais!

    eu vou tentar fazer o xvfb executar dinamicamente. 

    pro uso da lib em MT em outras linguagens no linux precisa fazer a mesma coisa com o xvfb? fazer ele executar dinamicamente em MT? 

  2. 30 minutos atrás, Daniel Simoes disse:

    Que comando você usa para iniciar a API, com a emulação do Servidor X ?

     

    eu uso assim:

    Xvfb :1 -ac &
    export DISPLAY=:1

    crio e executo uma instancia de interface usando o xvfb

    depois disso eu executo a aplicação normalmente com node index.js

     

    se eu executar sem os comandos antes pra configurar o display ele aparece esse erro!, usando o comando a cima antes funciona normalmente!

    image.png.c7b4a54b3d0b2761826b1ca06900e202.png

  3.  

    Como você pode vê na demonstração 1 quando carrego um por vez funciona corretamente.

     Já na 2, eu carrego a req mais demorada (PDF base64) e em seguida carrego a info e assim que executa a info para tudo e cancela tudo.

     

    Tudo leva a crer que seja algo relacionado ao ponteiro, porem como ele funciona no Windows então pode ser algo diferente, mas o problema é bem parecido o que acontecia no Windows.

  4. 7 minutos atrás, Daniel Simoes disse:

    O Linux está rodando em modo Console ? (Sem o servidor X)

    A lib ainda depende de um ambiente gráfico...

    Você pode emular um, usando o XVFB

    sim, está rodando em modo console, ja foi configurado tudo e funciona normalmente quando faz uma unica req, porem quando executa mais de uma ele finaliza, parecido uq acontecia com o windows rsrs, ohh sofrimento kkkk

  5. 22 minutos atrás, Daniel Simoes disse:

    isso me chamou atenção... é algo que possa ser chamado no seu código de inicialização ?

    [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called

    não, acredito que seja relacionado a lib ou as dependências dela, pois eu testei o worker_threads sem a chamada da lib e o carregamento e funcionamento de varias reqs ao mesmo tem funcionando normalmente.

  6. 19 minutos atrás, desdobrar disse:

    isso, foi usada a Cdecl\ACBrNFe64.dll,

    vou tentar colocar mais Bytes e fazer mais testes.

    Sem sucesso, esses foram os erros que apareceu ao longo de varios testes relacionados a essa mensagem: Segmentation fault

    veja se você reconhece algum pra termos uma noção pra onde seguir!

    ERROR in code: TGtk2WidgetSet.CreateBitmapFromRawImage Incompatible DataSize
    Creating gdb catchable error:
    
      $00007FBA8C695028
      $00007FBA8C692BB5
      $00007FBA8C7512B1
      $00007FBA8C67ECEC
      $00007FBA8C6CE048
      $00007FBA8C6D3E87
      $00007FBA8C6D873E
      $00007FBA8C6DBB64
      $00007FBA8C6E563E
    Floating point exception
    
    
    ---------------------------
    
    node: ../../src/xcb_io.c:533: _XAllocID: Assertion `ret != inval_id' failed.
    Aborted
    
    ---------------------------
    
    [xcb] Unknown request in queue while dequeuing
    [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
    [xcb] Aborting, sorry about that.
    node: ../../src/xcb_io.c:163: dequeue_pending_request: Assertion `!xcb_xlib_unknown_req_in_deq' failed.
    node: Fatal IO error 11 (Resource temporarily unavailable) on X server :1.
    Aborted
    
    
    [xcb] Unknown request in queue while dequeuing
    [xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
    [xcb] Aborting, sorry about that.
    node: Fatal IO error 11 (Resource temporarily unavailable) on X server :1.
    node: ../../src/xcb_io.c:163: dequeue_pending_request: Assertion `!xcb_xlib_unknown_req_in_deq' failed.
    Aborted
    
    node: Fatal IO error 2 (No such file or directory) on X server :1.
    [TGtk2WidgetSet.Destroy] WARNING: There are 2 unreleased GDIObjects, a detailed dump follows:
    [TGtk2WidgetSet.Destroy]   GDIOs: 00007F529EA460C0 00007F529F0B3940
    [TGtk2WidgetSet.Destroy]   gdiBitmap: 2
    
    [TGtk2WidgetSet.Destroy] WARNING: There are 1 unreleased GDIObjects, a detailed dump follows:

     

  7. 4 minutos atrás, Daniel Simoes disse:

    @desdobrar, que fantástica a iniciativa de vocês...

    Eu estava quebrando a cabeça com essa inicialização.. e como não sou nativo em Node.Js, estava apanhando...

    Ficarei muito grato por toda essa ajuda, e pela a elaboração de um Demo compatível com Multi Thread...

    Posso enviar um brinde do ACBr a vocês e para o @CODIGO SISTEMAS LTDA ?

    Nossa, muito obrigado, pode sim!

    ainda estamos tentando fazer funcionar no linux, parece que o ponteiro que rodou no windows não funciona no linux, estamos tentando achar uma solução. assim que conseguir fazer funcionar no linux posto aqui a resolução e logo em seguida mando os exemplos limpos e documentados de como rodar em ambas as plataformas. 

  8. Boa tarde, achamos o problema, o @CODIGO SISTEMAS LTDA Luiz Augusto, conseguiu achar o problema.

    basicamente o problema era na execução e criação do pointer, segue como foi solucionado.

    A chamada da Lib ficou assim

    let handlePtr = ref.refType('int');
    
    const libm = ffi.Library(pathDllACBrLibNFe, {
    
        NFE_Inicializar: ['int', [handlePtr, 'string', 'string']],
      
        NFE_Finalizar: ['int', [handlePtr]],
        NFE_UltimoRetorno: ['int', [handlePtr, 'string', 'string']],
        NFE_Nome: ['int',[handlePtr, 'string','string']],
        NFE_Versao: ['int', [handlePtr, 'string','string']],
      
        NFE_ConfigLer: ['int', [handlePtr, 'string']],
        NFE_ConfigGravar: ['int', [handlePtr, 'string']],
        NFE_ConfigLerValor: ['int',[handlePtr,'string','string','string','string']],
        NFE_ConfigGravarValor: ['int', [handlePtr, 'string', 'string', 'string']],
        NFE_ConfigImportar: ['int',[handlePtr, 'string']],
        NFE_ConfigExportar: ['int',[handlePtr, 'string','string']],
      
        NFE_ObterCertificados: ['int',[handlePtr, 'string','string']],
        NFE_CarregarXML: ['int', [handlePtr, 'string']], 
        NFE_SalvarPDF: ['int',[handlePtr, 'string','string']],
      
    });

     

    A execução da inicialização ficou assim:

    let handle = ref.alloc(handlePtr);
    
    libm.NFE_Inicializar(handle, '', eChaveCrypt);
    handle = handle.deref();

     

    e os demais métodos vc chama da mesma forma

    libm.NFE_ConfigGravarValor(handle, 'Principal', 'TipoResposta', '2');

    OBS: a execução em node ainda depende da funcionalidade worker_threads, pois ainda precisa fazer o node executar varias instancias. ainda estou finalizando os testes e logo mais estarei criando um exemplo bem limpo e objetivo pra poder ser anexado nos exemplos em node js. Obrigado! 

    • Curtir 5
    • Obrigado 1
  9. 2 horas atrás, Daniel Simoes disse:

    @desdobrar, ainda estou tentando montar um ambiente para rodar e debugar...

    Minha suspeita é que o Ponteiro da Lib, não está retornando de forma correta, devido a forma como os parâmetros estão sendo passados... Ainda estou estudando sobre o assunto, no tutorial da FFI

    https://github.com/node-ffi/node-ffi/wiki/Node-FFI-Tutorial

     

    Notei que em nosso Discord, tem um outro usuário que está usando com sucesso a versão MT com Node.js

    https://discord.com/channels/798697718800318484/798966420243349527/1029496508904636467

    O Luiz Augusto, está exatamente com o mesmo problema que eu, ele tbm não conseguiu implementar o MT com nodejs, já conversei com ele e passei minha evolução, ele que percebeu que realmente a minha primeira implementação não executava em MT, executa como uma fila.

    Tentei executar criando uma alocação do tipo int com 4 bytes conforme vc informou;

    let handle = ref.alloc(ref.types.int, 4);

    essa é a forma como eu recebo o ponto pra passar pras outras funções.

    handle = ref.readPointer(handle, 0, 4);

    porem tbm sem sucesso!

    Eu tbm estou acreditando que o problema esteja com esse ponto de identificação, existe algo errado com ele, ou ele não reescreve ou ele sempre cria o mesmo ponto sempre.

    • Curtir 1
  10. 5 horas atrás, antonio.carlos disse:

    Realizando alguns testes aqui com o programa exemplo no C#, na versão MultiThread, veja:

    Eu criei duas instancias da aplicação, ambos utilizando versão MT:
    Instancia 1:
    image.png

    Veja o valor de libHandle, agora comparando com a instancia 2:
    image.png

    Cada um recebeu um valor diferente, possibilitando o uso de múltiplas instancias e chamadas dos métodos no programa exemplo..

    e olhando o log:
    07/12/22 11:15:16:582 - NFE_ObterCertificados
    07/12/22 11:15:18:712 - NFE_ObterCertificados

    Chamada do método praticamente ao mesmo tempo.

    07/12/22 11:19:10:977 - LIB_UltimoRetorno
    07/12/22 11:19:10:980 -    Codigo:0, Mensagem:
    07/12/22 11:19:11:857 - LIB_UltimoRetorno
    07/12/22 11:19:11:862 -    Codigo:0, Mensagem:

    Detalhe, o tempo de 11:15 para 11:19 é porque estava em modo debug, por este motivo demorou alguns minutinhos para obter o retorno do método.

    Não realizei testes em node, pois não conheço a linguagem, mas temos colegas na comunidade do ACBr que utilizam NodeJS, podem te ajudar no uso da lib versão multithread.

    Tem exemplo no nosso SVN, foi contribuição da comunidade:
    http://svn.code.sf.net/p/acbr/code/trunk2/Projetos/ACBrLib/Demos/Node.js/

    Acredito que o mesmo não esteja em multithread, não sei se te ajuda também... 

    Legal, pois eu já verifiquei todos os exemplos, e ainda nao conseguir fazer rodar em MT, eu vou preparar os testes com o log da lib pra verificar e comparar com esse teste que vc fez em C#.

    nenhum dos exemplos em JS usa o MT, a execução normal em ST funciona perfeito. o problema mesmo e no uso e execução do MT.

  11. Olá, conforme, foi passado no discord, segue a reprodução do erro ACBRLIB NFE que não executa em MT.

    • A lib. em single thread funciona perfeitamente
    • O propósito da execução do MT da lib. É criar uma API web que use todos os serviços da lib.
    • Cada requisição da API, end-point irá executar uma função da lib.
    • Ao executar várias requisições na situação 1, ela se comporta como um semáforo, esperando a primeira requisição terminar para as outras finalizar, em quanto não finaliza uma a outra continua em execução aguardando-a terminar.
    •  

    Problema 1: A Lib. do Acbr não executa em MT, quando passado todos os parâmetros de pointer definindo um novo thread a mesma se comporta como um semáforo, esperando uma requisição termina para continuar a outra. 

    Problema 2: Ao fazer o node executar MultiThreads com a função nativa do node worker_threads, quando executado requisições diferentes ele se comporta perfeitamente como o esperado, mas quando eu tento realizar a execução da mesma requisição ele acaba matando todas as requisições anulando-as completamente, sendo impossível de finalizar a requisição.

     

    Citar

    Informações de como reproduzir, junto com os arquivos necessários em anexo. LEIA O ARQUIVO Instruções.docx, lá contem todo o passo a passo para configurar o ambiente.

    Link do Arquivo: https://stsw.com.br/exemplos-mt-acbr-lib.zip

     

     

     

×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.