As GroupRequests are alerted to new responses, the total timeout to receive all responses decreases. This makes GroupRequests return from execute() without waiting for all responses within the true timeout.
I think this can be fixed by (in the doExecute() method ) by adding
start_time = System.currentTimeMillis();
timeout_time = start_time + timeout;
and replacing
timeout = timeout - (System.currentTimeMillis() - start_time);
with
timeout = timeout_time - System.currentTimeMillis();