luky116 commented on code in PR #745:
URL: 
https://github.com/apache/incubator-seata-go/pull/745#discussion_r1894589501


##########
pkg/rm/tcc/fence/handler/tcc_fence_wrapper_handler.go:
##########
@@ -163,6 +165,40 @@ func (handler *tccFenceWrapperHandler) 
InitLogCleanChannel() {
        })
 }
 
+func (handler *tccFenceWrapperHandler) InitLogCleanTask(tx *sql.Tx) {
+       handler.logTaskOnce.Do(func() {
+               // Create a ticker that will fire initially based on the time 
remaining until the next midnight (00:00:00).
+               go func() {
+                       ticker := time.NewTicker(getDurationUntilNextZero())
+                       defer ticker.Stop()
+
+                       for {
+                               select {
+                               case <-ticker.C:
+                                       now := time.Now()
+                                       // Get the start time of the day before 
the current day (00:00:00) and assign it to timeBefore with the same location 
as now.
+                                       timeBefore := time.Date(now.Year(), 
now.Month(), now.Day()-1, 0, 0, 0, 0, now.Location())
+
+                                       for {
+                                               deletedRowCount, err := 
handler.tccFenceDao.DeleteTCCFenceDOByMdfDate(tx, timeBefore, limitDelete)
+                                               if err != nil {
+                                                       fmt.Printf("Error 
occurred during TCC fence clean task: %v\n", err)

Review Comment:
   这种方式还有个问题,如果网络抖动一次,当前的删除工作就终止的
   



##########
pkg/rm/tcc/fence/handler/tcc_fence_wrapper_handler.go:
##########
@@ -163,6 +165,40 @@ func (handler *tccFenceWrapperHandler) 
InitLogCleanChannel() {
        })
 }
 
+func (handler *tccFenceWrapperHandler) InitLogCleanTask(tx *sql.Tx) {
+       handler.logTaskOnce.Do(func() {
+               // Create a ticker that will fire initially based on the time 
remaining until the next midnight (00:00:00).
+               go func() {
+                       ticker := time.NewTicker(getDurationUntilNextZero())
+                       defer ticker.Stop()
+
+                       for {
+                               select {
+                               case <-ticker.C:
+                                       now := time.Now()
+                                       // Get the start time of the day before 
the current day (00:00:00) and assign it to timeBefore with the same location 
as now.
+                                       timeBefore := time.Date(now.Year(), 
now.Month(), now.Day()-1, 0, 0, 0, 0, now.Location())
+
+                                       for {
+                                               deletedRowCount, err := 
handler.tccFenceDao.DeleteTCCFenceDOByMdfDate(tx, timeBefore, limitDelete)
+                                               if err != nil {
+                                                       fmt.Printf("Error 
occurred during TCC fence clean task: %v\n", err)

Review Comment:
   如果采用评论区说的,使用channel,见听到一定条数删除一次,看看会有啥啥问题不



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@seata.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@seata.apache.org
For additional commands, e-mail: notifications-h...@seata.apache.org

Reply via email to