[ 
https://issues.apache.org/jira/browse/HAMA-307?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Edward J. Yoon updated HAMA-307:
--------------------------------

    Fix Version/s:     (was: 0.2.1)
                       (was: 0.3.0)

> BSPMaster - job ID counter is not read and updated atomically
> -------------------------------------------------------------
>
>                 Key: HAMA-307
>                 URL: https://issues.apache.org/jira/browse/HAMA-307
>             Project: Hama
>          Issue Type: Bug
>          Components: bsp
>    Affects Versions: 0.2.0
>            Reporter: Filipe Manana
>            Assignee: Edward J. Yoon
>             Fix For: 0.2.0
>
>         Attachments: hama-307.patch
>
>
> The nextJobId (int attribute) in BSPMaster is not read and updated 
> atomically, therefore it's possible that concurrent requests get the same job 
> ID and/or cause the job ID to not get incremented by the proper quantity.
> The following simple patch fixes it.
> Notice:
> I changed the type from int to Integer.
> This is to avoid doing the following in getNewJobId():
> int id;
> synchronized (this) {
>   id = nextJobId++;
> }
> the instance (referenced by this) is synchronized in many places in 
> BSPMaster, so by making nextJobId an Integer (object), we can synchronize on 
> it, reducing contention times:
> private Integer nextJobId = Integer.valueOf(1);
> public BSPJobID getNewJobId() throws IOException {
>     int id;
>     synchronized (nextJobId) {
>       id = nextJobId;
>       nextJobId = Integer.valueOf(id + 1);
>     }
>     return new BSPJobID(this.masterIdentifier, id);
>   }
> cheers

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to