The reason is the ReplaceRequest.validate() should compare to 'newCommit' of ReplaceRequest instance, else when ReceiveCommits.autoCloseChanges() working on the second one of a series of commits, the 'commit already exists(in the project)' will be thrown wrongly. Fixed. Bug: issue 2607 Change-Id: Ib4db351d39f85d57ccf532da4d6422bdcbb88105