[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