Skip to content
Snippets Groups Projects
Commit f7071abb authored by gmantele's avatar gmantele
Browse files

[UWS] Fix bug with JobObserver. The notification of all observers was not

synchronized although the collection of observers is synchronized (Vector) ;
using an Iterator ensures the synchronization and avoids concurrency problems.
parent 70dc3a14
No related branches found
No related tags found
No related merge requests found
...@@ -115,7 +115,7 @@ import uws.service.request.UploadFile; ...@@ -115,7 +115,7 @@ import uws.service.request.UploadFile;
* </ul> * </ul>
* *
* @author Gr&eacute;gory Mantelet (CDS;ARI) * @author Gr&eacute;gory Mantelet (CDS;ARI)
* @version 4.2 (06/2017) * @version 4.2 (09/2017)
*/ */
public class UWSJob extends SerializableUWSObject { public class UWSJob extends SerializableUWSObject {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -1637,21 +1637,9 @@ public class UWSJob extends SerializableUWSObject { ...@@ -1637,21 +1637,9 @@ public class UWSJob extends SerializableUWSObject {
* @throws UWSException If at least one observer can not have been updated. * @throws UWSException If at least one observer can not have been updated.
*/ */
public final void notifyObservers(ExecutionPhase oldPhase){ public final void notifyObservers(ExecutionPhase oldPhase){
int i = 0;
JobObserver observer = null;
String errors = null; String errors = null;
while(i < observers.size()){ for(JobObserver observer : observers){
// Gets the observer:
if (i == 0 && observer == null)
observer = observers.get(i);
else if (observer.equals(observers.get(i))){
i++;
if (i < observers.size())
observer = observers.get(i);
else
return;
}
// Update this observer: // Update this observer:
try{ try{
observer.update(this, oldPhase, getPhase()); observer.update(this, oldPhase, getPhase());
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment