May I know which version of extent report you are using currently ?
Recently I have given fix for the problem which we reported and please make sure below validations which you done from your side
1. Just implement Retry analyzer as usual, Make sure remove skipped test using RetryAnalyzer (hope it will try to fix the issue from TestNG side)
2. Use extentReport.removeTest(test); method to remove logs from current ExtentTest object. It will remove logs from current ExtentTestinstance. Then flush test results into extentreport level.
3. Don't add child node to parent node category at start test level. Just add when you get desired result either pass instance < = RetryMaxCount or Fail == RetryMaxCount at end test case level.
Note: Make sure where we exactly get current instance of ExtentTest, which hold current test logs.
Hope it may help you guys, let me know if you guys face any problems
Thanks,
Lakshmi