[firebase-br] Firedac+Commit+Delphi 10.3.1=problema?
Gladiston Santana
gladiston em vidy.com.br
Qua Maio 8 15:09:50 -03 2019
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.
Mais detalhes sobre a lista de discussão lista