Se il parallelo è una chiamata ajax, penso che il tuo problema sta nel fatto che durante il ciclo for l'oggetto sessione non viene restituito al browser e quindi la chiamata asincrona ajax porta con se una sessione non verosimile rispetto a quella che sta elaborando il ciclo.

Potresti risolvere con una mappa statica dove puoi inserire la percentuale associandola all'id della sessione. L'inconveniente però è che la mappa rimane così instanziata per tutto il ciclo di vita del container e per questo va azzerata periodicamente con un altro thread.