Currently, when the server starts up, it starts scanning from the same starting block each time, which causes it to react to events it already processed on any previous run of the program.
A solution would be to simply store the last block scanned in ethReadLoop to a file, and load this upon startup to pass to the "go ethReadLoop(4200000)" line in main.go.