I find out that renewal donations cause empty donations first and last name.
On each new donation, GiveWP updates the donor name in donor meta to keep the lastest name as donor profile name.
We do not define donor first and last name when creating a new payment. This is the reason for the empty donor name in the donor meta.