Set of 9's
Your bet sizing wasn't great. You allowed the villain to play correctly.
Let's review.... I assume it was a full table. This means that the pot would be 10K before the flop.
The villain is on a flush draw and his odds
of catching a flush are 16% on turn and another 16% on river (32% if all in on flop).
Lets ignore the other player for now. I'll get back to him. You bet 3000, which means that anyone calling that raise only needs hit 18% of the time on the turn to break even. Since he's 16% to hit that is really close. Add in the implied odds of him getting to bet a little on the river and he has enough to draw.
When you push later, you put another 33k into a pot that is 31k. You have no more money, so the villain doesn't have to worry about another bet. This time he needs to win 34% of the time to break even and he'll get there 32%.
You never gave him a good reason to fold.
Had you bet 7K on the flop, he'd have to catch 29% of the time on the turn and he'd only get there 16%. And you'd be able deny him odds again on the river.
As for the other player, it seems that he saw your bet as weak so he made a play. This is why he folded getting good odds later. Had you bet 7k from the start he probably would have folded.
The villain may have been a donk but maybe he realized that you give good odds post flop and that made him willing to call your raise in the first place.
Either way, don't worry about whether he's a donk or not, focus on what you did to make this happen. You need to force people to make mistakes. You didn't do that here.