[
https://issues.apache.org/jira/browse/KYLIN-2429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ted Yu updated KYLIN-2429:
--------------------------
Description:
{code}
final JavaPairRDD<ByteArray, Object[]> encodedBaseRDD =
intermediateTable.javaRDD().mapToPair(new PairFunction<Row, ByteArray,
Object[]>() {
transient boolean initialized = false;
...
public Tuple2<ByteArray, Object[]> call(Row row) throws Exception {
if (initialized == false) {
synchronized (SparkCubingByLayer.class) {
if (initialized == false) {
{code}
For double checked locking to work, initialized needs to be volatile.
was:
{code}
final JavaPairRDD<ByteArray, Object[]> encodedBaseRDD =
intermediateTable.javaRDD().mapToPair(new PairFunction<Row, ByteArray,
Object[]>() {
transient boolean initialized = false;
...
public Tuple2<ByteArray, Object[]> call(Row row) throws Exception {
if (initialized == false) {
synchronized (SparkCubingByLayer.class) {
if (initialized == false) {
{code}
For double checked locking to work, initialized needs to be volatile.
> Variable initialized should be declared volatile in
> SparkCubingByLayer#execute()
> --------------------------------------------------------------------------------
>
> Key: KYLIN-2429
> URL: https://issues.apache.org/jira/browse/KYLIN-2429
> Project: Kylin
> Issue Type: Bug
> Reporter: Ted Yu
>
> {code}
> final JavaPairRDD<ByteArray, Object[]> encodedBaseRDD =
> intermediateTable.javaRDD().mapToPair(new PairFunction<Row, ByteArray,
> Object[]>() {
> transient boolean initialized = false;
> ...
> public Tuple2<ByteArray, Object[]> call(Row row) throws Exception
> {
> if (initialized == false) {
> synchronized (SparkCubingByLayer.class) {
> if (initialized == false) {
> {code}
> For double checked locking to work, initialized needs to be volatile.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)