is this why presentTuples is volatile? Why don't we put this into the previous synchronized block as flush is asynchronous anyway and won't be blocking.