()
| 112 | } |
| 113 | |
| 114 | func IsLowMemory() bool { |
| 115 | //return atomic.LoadInt32(&lowMemory) == 1 |
| 116 | memory, err := mem.VirtualMemory() |
| 117 | if err != nil { |
| 118 | return false |
| 119 | } |
| 120 | if ((memory.Available * 10) < (memory.Total * 2)) && (memory.Available < 1*1024*1024*1024) { |
| 121 | if !lowMemory { |
| 122 | Logger.Warn("memory is less than 20% and 1GB. pause parsing binlog", |
| 123 | "available", memory.Available, "total", memory.Total) |
| 124 | } |
| 125 | lowMemory = true |
| 126 | return true |
| 127 | } else { |
| 128 | if lowMemory { |
| 129 | Logger.Info("memory is greater than 20% or 1GB. continue parsing binlog", |
| 130 | "available", memory.Available, "total", memory.Total) |
| 131 | } |
| 132 | lowMemory = false |
| 133 | return false |
| 134 | } |
| 135 | } |
| 136 | |
| 137 | func MemoryMonitor(logger LoggerType) { |
| 138 | if !atomic.CompareAndSwapInt32(&memoryMonitorCount, 0, 1) { |
no outgoing calls
no test coverage detected