[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