Thank you for your reply. This is a long-running service. Without CRC validation, errors caused by partial writes could accumulate over time and affect correctness. Therefore, we adopted this approach.
Just throwing out some ideas, obviously the best solution is the one that you already have working :)