Examples of errors detected by the V6074 diagnostic
V6074. Non-atomic modification of volatile variable.
DBeaver
V6074 Non-atomic modification of volatile variable. Inspect 'initializedCount'. CompareObjectsExecutor.java(130)
private volatile int initializedCount = 0; .... public CompareObjectsExecutor(CompareObjectsSettings settings) { .... initializeFinisher = new DBRProgressListener() { @Override public void onTaskFinished(IStatus status) { if (!status.isOK()) { initializeError = status; } else { initializedCount++; } } }; .... } DBeaver
V6074 Non-atomic modification of volatile variable. Inspect 'drawCount'. ProgressLoaderVisualizer.java(192)
private volatile int drawCount = 0; .... private void showProgress() { if (loadStartTime == 0) { return; } if (progressOverlay == null) { .... painListener = e -> { .... Image image = DBeaverIcons.getImage( PROGRESS_IMAGES[drawCount % PROGRESS_IMAGES.length] ); .... }; .... } drawCount++; .... } DBeaver
V6074 Non-atomic modification of volatile variable. Inspect 'runningOperations'. MultiPageWizardDialog.java(590)
public class MultiPageWizardDialog extends .... { .... private volatile int runningOperations = 0; .... @Override public void run(....) { .... try { runningOperations++; // <= ModalContext.run( runnable, true, monitorPart, getShell().getDisplay() ); } finally { runningOperations--; // <= .... } } } Similar errors can be found in some other places:
- V6074 Non-atomic modification of volatile variable. Inspect 'runningOperations'. MultiPageWizardDialog.java(593)
Apache Flink
V6074 Non-atomic modification of volatile variable. Inspect 'currentNumAcknowledgedSubtasks'. PendingCheckpointStats.java(131)
boolean reportSubtaskStats(JobVertexID jobVertexId, SubtaskStateStats subtask) { TaskStateStats taskStateStats = taskStats.get(jobVertexId); if (taskStateStats != null && taskStateStats.reportSubtaskStats(subtask)) { currentNumAcknowledgedSubtasks++; // <= latestAcknowledgedSubtask = subtask; currentStateSize += subtask.getStateSize(); // <= long processedData = subtask.getProcessedData(); if (processedData > 0) { currentProcessedData += processedData; // <= } long persistedData = subtask.getPersistedData(); if (persistedData > 0) { currentPersistedData += persistedData; // <= } return true; } else { return false; } } Similar errors can be found in some other places:
- V6074 Non-atomic modification of volatile variable. Inspect 'currentStateSize'. PendingCheckpointStats.java(134)
- V6074 Non-atomic modification of volatile variable. Inspect 'currentProcessedData'. PendingCheckpointStats.java(138)
- V6074 Non-atomic modification of volatile variable. Inspect 'currentPersistedData'. PendingCheckpointStats.java(143)