FAQ
Complex Writable classes are not thread safe
--------------------------------------------

Key: HADOOP-6512
URL: https://issues.apache.org/jira/browse/HADOOP-6512
Project: Hadoop Common
Issue Type: Bug
Components: io
Affects Versions: 0.20.1
Environment: hadoop 20.1, java 1.6.0_17, fedora
Reporter: robert Cook


While SequenceFile methods are properly "synchronized", the complex Writable classes are not thread safe.

e.g. ArrayWritable, interleaved in... calls by different threads will scramble input

public void readFields(DataInput in) throws IOException {
values = new Writable[in.readInt()]; // construct values
for (int i = 0; i < values.length; i++) {
Writable value = WritableFactories.newInstance(valueClass);
value.readFields(in); // read a value
values[i] = value; // store it in values
}
}

Please add synchronized prefixes. Not needed for simple types.

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Search Discussions

  • Chris Douglas (JIRA) at Jan 26, 2010 at 9:08 pm
    [ https://issues.apache.org/jira/browse/HADOOP-6512?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

    Chris Douglas resolved HADOOP-6512.
    -----------------------------------

    Resolution: Invalid

    I agree with Todd; the caller is responsible for thread safety.
    Complex Writable classes are not thread safe
    --------------------------------------------

    Key: HADOOP-6512
    URL: https://issues.apache.org/jira/browse/HADOOP-6512
    Project: Hadoop Common
    Issue Type: Bug
    Components: io
    Affects Versions: 0.20.1
    Environment: hadoop 20.1, java 1.6.0_17, fedora
    Reporter: robert Cook

    While SequenceFile methods are properly "synchronized", the complex Writable classes are not thread safe.
    e.g. ArrayWritable, interleaved in... calls by different threads will scramble input
    public void readFields(DataInput in) throws IOException {
    values = new Writable[in.readInt()]; // construct values
    for (int i = 0; i < values.length; i++) {
    Writable value = WritableFactories.newInstance(valueClass);
    value.readFields(in); // read a value
    values[i] = value; // store it in values
    }
    }
    Please add synchronized prefixes. Not needed for simple types.
    --
    This message is automatically generated by JIRA.
    -
    You can reply to this email to add a comment to the issue online.

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupcommon-dev @
categorieshadoop
postedJan 26, '10 at 8:26p
activeJan 26, '10 at 9:08p
posts2
users1
websitehadoop.apache.org...
irc#hadoop

1 user in discussion

Chris Douglas (JIRA): 2 posts

People

Translate

site design / logo © 2022 Grokbase