Random thought: Is the data source or the extracts hosted on a virtual/mapped drive? I.e. not local
When Tableau runs incremental refresh, it creates a temporary extract (tde file) for the increment, and queries the underlying database for the changes since the last time it refreshed the extract. Once the increment has been appended to the extract, the temporary extract is deleted.
The Tableau Data Engine error code 309 happens when the data engine tries to unlink (delete) a file but the user does not have permission (the file exists though). IIt would take logs to know for sure, but it sounds like the "delete temporary extract" step is failing. I suggest you check the permissions on the drive you are using for Tableau Temp, and if there is nothing obviously wrong, work with support to get more help.
Before release 9.3, we used to return error code 4 in this case (and many others) - from 9.3, it is much easier to diagnose problems like this.