Clipper On Line • Ver Tópico - Errorsys

Errorsys

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Errorsys

Mensagempor JoséQuintas » 27 Set 2019 19:33

Pois é... mais de 10 anos com minha errorsys... e precisei alterar.

Agora coloquei pra registrar assim que entrar no errorsys.

Até erro que, por default, já é resolvido sozinho, agora vai registrar também.

Pode ser que isso atrapalhe ou não, só tem um jeito de saber: testando

STATIC FUNCTION JoseQuintasError( e )

   LOCAL nCont, cMessage, aOptions, nChoice

   // build error message
   cMessage := ErrorMessage(e)
   IF ! Empty( e:OsCode )
      cMessage += ";(DOS Error " + Ltrim( Str( e:OsCode ) ) + ")"
   ENDIF
   Errorsys_WriteErrorLog( cMessage, 3 )


O que está acontecendo?

Depois das alterações pra MySQL, no cliente aparece workarea not indexed, aparece quit/retry, mas não registra erro.

Como não sei aonde acontece o erro, não consigo resolver.

Espero que essa alteração ajude nisso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Errorsys

Mensagempor Ranier » 28 Set 2019 10:12

JoséQuintas escreveu:Depois das alterações pra MySQL, no cliente aparece workarea not indexed, aparece quit/retry, mas não registra erro.

Esse é um erro chato pra caramba, mas talvez isso possa ajudar.
Com certeza é um Seek em uma "workarea", sem índice ativo, ou seja, o programa está falhando em abrir/setar algum índice, ou esta fechando em outra função.
O problema, é que ao falhar em abrir/setar algum índice, não está sendo reportado corretamente o problema.
Minha sugestão é que crie uma versão DEBUGÁVEL e rode no seu cliente, quando ocorrer o problema, provavelmente, terá mais informações para resolvê-lo.
Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

Errorsys

Mensagempor JoséQuintas » 28 Set 2019 10:23

Ranier escreveu:o programa está falhando em abrir/setar algum índice, ou esta fechando em outra função.


É...
Uma coisa chata é errar o nome, não há aviso sobre isso.
OrdSetFocus( "não tem" )

Uso CDX, então problema de não abrir arquivo não é.
Geralmente as rotinas tem o retorno à área anterior e índice anterior.

O pior é que é na digitação de itens no pedido.
Alguma situação especial para aquele tipo de nota.

Putz.. tá aí... digitar um pedido exatamente igual ao que estão digitando.
Mas tudo bem, também vai ser uma boa oportunidade pra testar a nova rotina de erros.

Por enquanto o cliente está se virando com opção "default", que aparece no erro.
Mas com certeza algum efeito colateral vai ter.
Ainda bem que foi só nesse cliente, e deu pra se virar.
E é o mesmo aplicativo em todos....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Errorsys

Mensagempor Ranier » 28 Set 2019 10:47

JoséQuintas escreveu:Uso CDX, então problema de não abrir arquivo não é. Geralmente as rotinas tem o retorno à área anterior e índice anterior.

A interações entre o Harbour e a rede, Windows nem sempre são "estáveis", tem muito pra dar errado, infelizmente. Algum índice corrompido, permissões de acesso que mudam, servidor sobrecarregado, recursos escassos, enfim, algo pode dar errado. Mas o problema nesse é o Harbour reportar corretamente que não conseguiu abrir/setar o índice, que resolveria de vez o problema.

JoséQuintas escreveu:Ainda bem que foi só nesse cliente, e deu pra se virar.

Mais um sintoma que o problema está na rede, servidor, cliente, arquivos do cliente e não no programa.
Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

Errorsys

Mensagempor JoséQuintas » 28 Set 2019 12:40

Ranier escreveu:Mais um sintoma que o problema está na rede, servidor, cliente, arquivos do cliente e não no programa.


Com certeza não.
Está mais pra ARQUIVO fechado por engano, ou uso de nome de índice errado.

Ou.... usuário.... após o erro do programador.

Mudança:
Os itens de pedido passaram a ter mais um índice dentro do CDX, por número de lançamento.

Problema:
Não criei esse índice, e a atualização automática não criou também

Solução:
Fiz outra versão que obrigatoriamente recriaria o índice CDX completo
Pedi pro usuário fazer atualização.

Possível problema, que não considerei:

São 3 empresas no mesmo local.
Avisei pra atualizar versão nas 3 empresas, apesar do usuário dizer que sim, pode ser que ele ainda não atualizou essa empresa, e faltando o novo índice é aonde acontece o erro.

Segunda feira vou ter a resposta, seja uma ou outra.

Isso explicaria porque só dá erro no cliente e na minha máquina não.
Esse número de lançamento... enquanto é DBF SEM MySQL NÃO SERVE PRA NADA.
Isso também explica porque usando DEFAULT tudo continua normalmente, porque mesmo com erro, depois volta ao índice anterior que existe.

Não acredito em problema de rede, acredito que causei problema e falta corrigir.

O máximo que pensei foi na hipótese do cliente ter largado tudo aberto na hora do almoço, e a rede Windows derrubar o terminal, mas não foi o caso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Errorsys

Mensagempor JoséQuintas » 28 Set 2019 13:03

Confio tanto nas minhas alterações de fonte.... que continuo alterando.
Vai tudo isso de alteração na próxima atualização.
Uma é da LIB e outra do que tá fora da LIB
Uns 200 fontes alterados, em continuação às alterações que já foram feitas antes.

Do jeito que as coisas estão indo.... acho que vai ser meu último ano com DBF, só mesmo o Flagship vai ficar fora disso.

libjpa.png


integra.png


Nota:
Isso tudo foi depois do que já está instalado no cliente, e que deu a mensagem de erro.
Mais arquivos vão pro MySQL (gravação dupla) ao atualizar para corrigir o erro que está acontecendo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Errorsys

Mensagempor JoséQuintas » 29 Set 2019 10:21

Eu não disse que ia pegar erro demais....
Este normalmente não é reportado, e é tratado na errorsys.
Em todo caso, coloquei na rotina o tratamento pra zero.

Error BASE/1340 Zero divisor: /
Called from JOSEQUINTASERROR(39)
Called from (b)ERRORSYS(25)
Called from GRAFTEMPO(59)
Called from SQLBACKUP(45)
Called from CRIAZIP(82)
Called from ZE_UPDATE(30)
Called from SISTEMA(71)
Called from (b)MAIN(48)
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Errorsys

Mensagempor JoséQuintas » 22 Out 2019 10:55

Tava recebendo DOS ERROR 32 e agora que percebi...
Foi minha alteração na errorsys.
Está certo, NÃO é erro normal, apenas registrou o que não precisava.

USE ARQUIVO
IF NetErr()
   ? "Não abriu"
ENDIF


DO WHILE .T.
   APPEND BLANK
   IF ! NetErr()
      EXIT
   ENDIF
   Inkey(0.3)
ENDDO


Os casos acima são tratados pelo aplicativo.
Mas minha alteração na errorsys passou a registrar até esse tipo de coisa.

Erros normalmente não registrados:

   // Only retry IF open error 2014.09.24.1810
   IF e:OsCode == 64 .AND. e:GenCode == EG_OPEN
      Errorsys_WriteErrorLog( "OK DEFAULT RETRY: " + cMessage, 3 )
      //@ 15, 15 SAY "Servidor sumiu. Tentar novamente em 2 segundos"
      //Inkey(2)
      RETURN .T.
   ENDIF

   // For network open error, set NetErr() and subsystem default
   IF ( e:GenCode == EG_OPEN .AND. e:OsCode == 32 .AND. e:CanDefault )
      Errorsys_WriteErrorLog( "OK DEFAULT RETRY: " + cMessage, 3 )
      NetErr( .T. )
      RETURN ( .F. )     // NOTE
   ENDIF

   // for lock error during APPEND BLANK, set NetErr() and subsystem default
   IF ( e:GenCode == EG_APPENDLOCK .AND. e:CanDefault )
      Errorsys_WriteErrorLog( "OK DEFAULT RETRY: " + cMessage, 3 )
      NetErr( .T. )
      RETURN ( .F. )     // NOTE
   ENDIF
...
   IF ! Empty( nChoice )
      // do as instructed
      IF ( aOptions[ nChoice ] == "Break" )
         Errorsys_WriteErrorLog( "OK OPTION BREAK: " + cMessage, 3 )
         Break(e)
      ELSEIF ( aOptions[ nChoice ] == "Retry" )
         RETURN (.T.)
         Errorsys_WriteErrorLog( "OK OPTION RETRY: " + cMessage, 3 )
      ELSEIF ( aOptions[ nChoice ] == "Default" )
         Errorsys_WriteErrorLog( "OK OPTION DEFAULT: " + cMessage, 3 )
         RETURN (.F.)
      ENDIF
   ENDIF


Mas pode ser interessante registrar essa última parte.
Quando o usuário escolhe RETRY, DEFAULT ou BREAK.
Esses erros não ficam registrados, e não se sabe quando o usuário pode fazer uso disso.

Tá mais pra curiosidade.
Vivemos sem isso por 30 anos, não sei se agora vai fazer alguma diferença.
Mas no append blank, pode mostrar como anda a concorrência numa rede duvidosa.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 13 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro