[firebase-br] Firedac+Commit+Delphi 10.3.1=problema?

Roberto Ford Long rford em terra.com.br
Sex Maio 10 12:01:13 -03 2019


Gladiston, bom dia.

O problema à primeira vista me pareceu ser de isolamento transacional.
Snapshot, read commited... e seria um problema do programa B.
Mas se A "commitou" e B foi fechado e aberto novamente, deveria ler as 
atualizações, independente do isolamento utilizado pelo B, correto?
Poderia ser algo relacionado ao modo que o Firebird está executando no 
servidor? Tipo Classic, Super?
Eu procuraria algum cache no caminho que só dá o flush ao encerrar o 
prog. A.
Não uso o Firedac, mas poderia ser algum parâmetro dele segurando o cache?
Nos mantenha informado do progresso / solução.
Abs, e boa sorte aí.
Roberto.


Em 08/05/2019 15:09, Gladiston Santana escreveu:
> Olá a todos.
>
> Estou com um codigo de um cliente que funcionou muito bem até pouco tempo
> atrás.
> Então fizemos um upgrade para o Delphi 10.3.1(Rio).
> E agora estamos recompilando varios programas.
> Um dos programas, chamemos de programa A, ao ser alterado e commitado
> (.commit) não são visiveis pelo programa B até que o programa A feche sua
> conexão com o banco de dados. O programa B pode ser fechados tantas vezes
> quanto quiser, não adianta, o programa A tem que ser finalizado. O programa
> A não usa CommitRetaining, usa apenas .Commit então estou em  duvidas se tá
> havendo algum bug no Firedac ou alguma coisa mudou e preciso adaptar meu
> programa.
>
> Nesses programas não uso lock pessimista, mas ao fazer o teste com ele, o
> programa B responde bem a tentativa duplicada de alteração com 'lock
> conflit' então o sistema de transação tá funcionando normalmente.
>
> Estes programas usam o método automatico do firedac de gerenciar as
> transações,  ele inicia as transações normalmente conforme necessário e
> devido a quantidade de codigo, ficaria maluco mudar para manual agora.
>
> Acho improvável que seja um bug no firedac, provavelmente é uma derrapada
> minha, apenas não consigo enxergar aonde.
>
> Depois de modificar tanto o FDConnection, agora ficou assim:
>
> Conexão atual:
>      Driver ID: FB
>      FetchOptions.AutoClose: True
>      FetchOptions.AutoFetchAll: afAll
>      FetchOptions.Cache: fiBlobs fiDetails fiMeta
>   FetchOptions.CursorKind: ckAutomatic
>      FetchOptions.DetailCascade: False
>      FetchOptions.DetailDelay: 0
>      FetchOptions.DetailOptimize: True
>      FetchOptions.DetailServerCascade False
>      FetchOptions.LiveWindowFastFirst: False
>      FetchOptions.LiveWindowParanoic: True
>      FetchOptions.Mode: fmOnDemand
>      FetchOptions.RecordCountMode: cmVisible
>      FetchOptions.RecsMax: -1
>      FetchOptions.RecsSkip: -1
>      FetchOptions.RowsetSize: 50
>      FetchOptions.Unidirectional: False
>      Params:
>        DRIVERID=FB
>        Server=localhost
>        Database=vidy15.fdb
>        CharacterSet=WIN1252
>        SQLDialect=3
>        PageSize=16384
>        Protocol=TCPIP
>        User_Name=sysdba
>        Password=*********
>        RoleName=
>      TxOptions.AutoCommit: True
>      TxOptions.AutoStart: True
>      TxOptions.AutoStop: True
>      TxOptions.DisconnectAction: xdCommit
>      TxOptions.EnableNested: True
>      TxOptions.Isolation: xiReadCommitted
>      TxOptions.Params: (vazio)
>      TxOptions.ReadOnly: False
>      LoginPrompt: False
>
> Removi o componente FDTransaction para testes e estou usando o TxOptions
> com as opções equivalentes.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://www.firebase.com.br/





Mais detalhes sobre a lista de discussão lista