Patent ID: 8677009

Claim:
A method for optimizing data transfer, the method comprising: establishing a plurality of synchronization points throughout a block of data that divides the block of data into a plurality of batches, each batch being associated with a synchronization point; reading a first batch by a read thread on a first server; if the first batch has been read with error, re-reading the first batch associated with a first synchronization point; if the first batch has been read without error: passing the first batch to a transmission thread on the first server; transmitting the first batch to a second server by the transmission thread; and reading a second portion of the block of data into a second batch by the read thread, wherein the read thread is operative to read the second portion of the block of data asynchronously from transmission of the first batch by the transmission thread; determining whether transmitting the first batch took a shorter amount of time than reading the second batch; and in response to determining that transmitting the first batch took a shorter amount of time than reading the second batch, spawning an additional read thread reading a third batch of the plurality of batches asynchronously from the reading of the second batch by the read thread of the first server.