Re: A question about the source code for the developers
Hi David,
Sorry for not being faster in responding, heavily into 7.5
development right now. But you certainly found code which
is incorrect, this much is obvious.
What you have found is dead code which should be removed.
While going through the code I did however find some
suspicious code in this area which I will investigate a
bit further.
Here is what is going on and why it works:
DBLQH is the controller of the Local Data Manager.
Each update of a record is done in 3 phases
1) Prepare phase (normally through LQHKEYREQ)
2) Commit phase
3) Complete phase
The commit phase is handled differently in primary
replica and backup replicas. In primary replicas
the commit code is executed in the commit phase.
In backup replicas it is executed in the complete
phase. The activeCreat equal to AC_NR_COPY means
that the local copy is in the synchronisation phase
of a node restart. In this case we also perform
the commit handling in the commit phase.
So explained in the code below:
David Smith Wrote:
-------------------------------------------------------
> Hi,I am currently reviewing the source code of
> DblqhMain.cpp and have found the following piece
> of code that I don't understand:
>
> if (seqNoReplica == 0 || activeCreat ==
> Fragrecord::AC_NR_COPY)
> {
> jam();
> commitReplyLab(signal);
This is primary replica OR a new fragment in the copy phase.
We are in the commit phase.
> return;
> }//if
> if (seqNoReplica == 0)
> {
> jam();
Primary replicas are not in the complete phase
when coming here (seqNoReplica means we come
here as primary replica).
> completeTransLastLab(signal);
> }
>
> inside the function Dblqh::tupcommit_conf(Signal*
> signal,
> TcConnectionrec * tcPtrP,
> Fragrecord * regFragptr)
>
> It seems the second 'if' never gets a chance to be
> executed unless the '||' operator in the first
> 'if' is not the regular Logical OR, but an
> overloaded operator defined by MySQL Cluster. I
> can't find such an definition in the file though.
>
> Could the developer please explain what is going
> on here? I have seen similar construct in
> DbtcMain.cpp too, so it seems I have missed
> something...The version I am using is gpl-7.4.10
>
Thx for checking the code so carefully, I will make
sure that the dead code is removed. I will also
check the code around this, often there is a fire
when there is smoke, I did saw some interesting
things to investigate :)
Rgrds Mikael Ronström
> Thanks,
> David