Skip to content

Commit

Permalink
replace 'AtomicInteger' with 'MutableInteger' in single thread scenario
Browse files Browse the repository at this point in the history
  • Loading branch information
NathanQingyangXu committed May 10, 2020
1 parent 72bf70f commit 5c11778
Show file tree
Hide file tree
Showing 16 changed files with 82 additions and 38 deletions.
Expand Up @@ -23,7 +23,7 @@
* @author Sanne Grinovero
*/
public class DelayedPostInsertIdentifier implements Serializable, Comparable<DelayedPostInsertIdentifier> {
private static final AtomicLong SEQUENCE = new AtomicLong( 0 );
private static final AtomicLong SEQUENCE = new AtomicLong();

private final long identifier;

Expand Down
Expand Up @@ -24,7 +24,7 @@
public abstract class AbstractAuxiliaryDatabaseObject
implements AuxiliaryDatabaseObject, AuxiliaryDatabaseObject.Expandable {
private static final String EXPORT_IDENTIFIER_PREFIX = "auxiliary-object-";
private static final AtomicInteger counter = new AtomicInteger( 0 );
private static final AtomicInteger counter = new AtomicInteger();

private final String exportIdentifier;
private final boolean beforeTables;
Expand Down
Expand Up @@ -6,16 +6,15 @@
*/
package org.hibernate.cfg;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;

import org.hibernate.AnnotationException;
import org.hibernate.AssertionFailure;
import org.hibernate.MappingException;
import org.hibernate.boot.spi.MetadataBuildingContext;
import org.hibernate.internal.util.MutableInteger;
import org.hibernate.internal.util.collections.CollectionHelper;
import org.hibernate.mapping.BasicValue;
import org.hibernate.mapping.Column;
Expand Down Expand Up @@ -78,7 +77,7 @@ public void doSecondPass(Map persistentClasses) throws MappingException {
columnByReferencedName.put( referencedColumnName.toLowerCase(Locale.ROOT), joinColumn );
}
//try default column orientation
AtomicInteger index = new AtomicInteger( 0 );
MutableInteger index = new MutableInteger();
if ( columnByReferencedName.isEmpty() ) {
isExplicitReference = false;
for ( Ejb3JoinColumn joinColumn : joinColumns ) {
Expand All @@ -105,7 +104,7 @@ private Property createComponentProperty(
PersistentClass referencedPersistentClass,
boolean isExplicitReference,
Map<String, Ejb3JoinColumn> columnByReferencedName,
AtomicInteger index,
MutableInteger index,
Property referencedProperty ) {
Property property = new Property();
property.setName( referencedProperty.getName() );
Expand Down Expand Up @@ -144,7 +143,7 @@ private Property createSimpleProperty(
PersistentClass referencedPersistentClass,
boolean isExplicitReference,
Map<String, Ejb3JoinColumn> columnByReferencedName,
AtomicInteger index,
MutableInteger index,
Property referencedProperty ) {
Property property = new Property();
property.setName( referencedProperty.getName() );
Expand Down
Expand Up @@ -26,7 +26,7 @@ public final class EventType<T> {
/**
* Used to assign ordinals for the standard event-types
*/
private static AtomicInteger STANDARD_TYPE_COUNTER = new AtomicInteger( 0 );
private static AtomicInteger STANDARD_TYPE_COUNTER = new AtomicInteger();

public static final EventType<LoadEventListener> LOAD = create( "load", LoadEventListener.class );
public static final EventType<ResolveNaturalIdEventListener> RESOLVE_NATURAL_ID = create( "resolve-natural-id", ResolveNaturalIdEventListener.class );
Expand Down
Expand Up @@ -9,6 +9,9 @@
public class MutableInteger {
private int value;

public MutableInteger() {
}

public MutableInteger(int value) {
this.value = value;
}
Expand All @@ -21,6 +24,10 @@ public int getAndIncrement() {
return value++;
}

public int incrementAndGet() {
return ++value;
}

public int get() {
return value;
}
Expand Down
@@ -0,0 +1,42 @@
/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
*/
package org.hibernate.internal.util;

public class MutableLong {
private long value;

public MutableLong() {
}

public MutableLong(long value) {
this.value = value;
}

public MutableLong deepCopy() {
return new MutableLong( value );
}

public long getAndIncrement() {
return value++;
}

public long incrementAndGet() {
return ++value;
}

public long get() {
return value;
}

public void set(long value) {
this.value = value;
}

public void increase() {
++value;
}
}
Expand Up @@ -11,7 +11,6 @@
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.BiConsumer;
import java.util.function.Consumer;

Expand All @@ -24,6 +23,7 @@
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SubselectFetch;
import org.hibernate.internal.FilterHelper;
import org.hibernate.internal.util.MutableInteger;
import org.hibernate.loader.ast.spi.Loadable;
import org.hibernate.loader.ast.spi.Loader;
import org.hibernate.metamodel.mapping.BasicValuedModelPart;
Expand Down Expand Up @@ -711,7 +711,7 @@ private QuerySpec generateSubSelect(

final SqlExpressionResolver sqlExpressionResolver = creationState.getSqlExpressionResolver();

final AtomicInteger count = new AtomicInteger();
final MutableInteger count = new MutableInteger();
fkDescriptor.visitTargetColumns(
(containingTableExpression, columnExpression, jdbcMapping) -> {
// for each column, resolve a SqlSelection and add it to the sub-query select-clause
Expand Down
Expand Up @@ -8,11 +8,11 @@

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;

import org.hibernate.NotYetImplementedFor6Exception;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.internal.util.MutableInteger;
import org.hibernate.sql.ast.Clause;
import org.hibernate.type.spi.TypeConfiguration;

Expand Down Expand Up @@ -44,7 +44,7 @@ public interface Bindable {
*/

default int getJdbcTypeCount(TypeConfiguration typeConfiguration) {
final AtomicInteger value = new AtomicInteger( 0 );
final MutableInteger value = new MutableInteger();
visitJdbcTypes(
sqlExpressableType -> value.incrementAndGet(),
Clause.IRRELEVANT,
Expand Down
Expand Up @@ -16,7 +16,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import java.util.function.Supplier;

Expand All @@ -35,6 +34,7 @@
import org.hibernate.internal.DynamicFilterAliasGenerator;
import org.hibernate.internal.FilterAliasGenerator;
import org.hibernate.internal.util.MarkerObject;
import org.hibernate.internal.util.MutableInteger;
import org.hibernate.internal.util.StringHelper;
import org.hibernate.internal.util.collections.ArrayHelper;
import org.hibernate.internal.util.collections.CollectionHelper;
Expand Down Expand Up @@ -1233,7 +1233,7 @@ public EntityDiscriminatorMapping getDiscriminatorMapping(TableGroup tableGroup)

@Override
public void visitConstraintOrderedTables(ConstraintOrderedTableConsumer consumer) {
final AtomicInteger tablePositionWrapper = new AtomicInteger( );
final MutableInteger tablePositionWrapper = new MutableInteger();

for ( String tableName : constraintOrderedTableNames ) {
final int tablePosition = tablePositionWrapper.getAndIncrement();
Expand Down
Expand Up @@ -8,14 +8,12 @@

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import java.util.function.Supplier;

Expand All @@ -31,6 +29,7 @@
import org.hibernate.internal.DynamicFilterAliasGenerator;
import org.hibernate.internal.FilterAliasGenerator;
import org.hibernate.internal.util.MarkerObject;
import org.hibernate.internal.util.MutableInteger;
import org.hibernate.internal.util.collections.ArrayHelper;
import org.hibernate.mapping.Column;
import org.hibernate.mapping.Formula;
Expand Down Expand Up @@ -942,7 +941,7 @@ private Predicate createDiscriminatorPredicate(

@Override
public void visitConstraintOrderedTables(ConstraintOrderedTableConsumer consumer) {
final AtomicInteger tablePositionWrapper = new AtomicInteger( );
final MutableInteger tablePositionWrapper = new MutableInteger();

for ( String tableName : constraintOrderedTableNames ) {
final int tablePosition = tablePositionWrapper.getAndIncrement();
Expand Down
Expand Up @@ -14,7 +14,6 @@
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import java.util.function.Supplier;

Expand All @@ -34,6 +33,7 @@
import org.hibernate.id.IdentityGenerator;
import org.hibernate.internal.FilterAliasGenerator;
import org.hibernate.internal.StaticFilterAliasGenerator;
import org.hibernate.internal.util.MutableInteger;
import org.hibernate.internal.util.collections.ArrayHelper;
import org.hibernate.internal.util.collections.JoinedIterator;
import org.hibernate.internal.util.collections.SingletonIterator;
Expand Down Expand Up @@ -371,7 +371,7 @@ public boolean isMultiTable() {

@Override
public void visitConstraintOrderedTables(ConstraintOrderedTableConsumer consumer) {
final AtomicInteger tablePositionWrapper = new AtomicInteger( );
final MutableInteger tablePositionWrapper = new MutableInteger();

for ( String tableName : constraintOrderedTableNames ) {
final int tablePosition = tablePositionWrapper.getAndIncrement();
Expand Down
Expand Up @@ -11,10 +11,10 @@
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;

import org.hibernate.engine.jdbc.spi.JdbcServices;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.internal.util.MutableInteger;
import org.hibernate.metamodel.mapping.EntityMappingType;
import org.hibernate.metamodel.model.domain.EntityDomainType;
import org.hibernate.query.sqm.internal.DomainParameterXref;
Expand All @@ -25,18 +25,18 @@
import org.hibernate.sql.ast.spi.SqlExpressionResolver;
import org.hibernate.sql.ast.tree.expression.ColumnReference;
import org.hibernate.sql.ast.tree.expression.Expression;
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
import org.hibernate.sql.ast.tree.from.TableGroup;
import org.hibernate.sql.ast.tree.from.TableReference;
import org.hibernate.sql.ast.tree.predicate.Predicate;
import org.hibernate.sql.ast.tree.select.QuerySpec;
import org.hibernate.sql.ast.tree.select.SelectStatement;
import org.hibernate.sql.exec.spi.ExecutionContext;
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
import org.hibernate.sql.exec.spi.JdbcParameterBindings;
import org.hibernate.sql.exec.spi.JdbcSelect;
import org.hibernate.sql.results.internal.SqlSelectionImpl;
import org.hibernate.sql.results.graph.basic.BasicResult;
import org.hibernate.sql.results.graph.DomainResult;
import org.hibernate.sql.results.graph.basic.BasicResult;
import org.hibernate.sql.results.internal.SqlSelectionImpl;

import org.jboss.logging.Logger;

Expand Down Expand Up @@ -73,7 +73,7 @@ public static SelectStatement generateMatchingIdSelectStatement(
idSelectionQuery.getFromClause().addRoot( mutatingTableGroup );

final List<DomainResult> domainResults = new ArrayList<>();
final AtomicInteger i = new AtomicInteger();
final MutableInteger i = new MutableInteger();
targetEntityDescriptor.getIdentifierMapping().visitColumns(
(containingTableExpression, columnExpression, jdbcMapping) -> {
final int position = i.getAndIncrement();
Expand Down Expand Up @@ -130,7 +130,7 @@ public static QuerySpec generateMatchingIdSelectQuery(
final TableGroup mutatingTableGroup = sqmConverter.getMutatingTableGroup();
idSelectionQuery.getFromClause().addRoot( mutatingTableGroup );

final AtomicInteger i = new AtomicInteger();
final MutableInteger i = new MutableInteger();
targetEntityDescriptor.getIdentifierMapping().visitColumns(
(containingTableExpression, columnExpression, jdbcMapping) -> {
final int position = i.getAndIncrement();
Expand Down
Expand Up @@ -7,7 +7,6 @@
package org.hibernate.query.sqm.mutation.internal.idtable;

import java.util.Collections;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.function.Supplier;

Expand All @@ -16,9 +15,9 @@
import org.hibernate.engine.jdbc.env.spi.JdbcEnvironment;
import org.hibernate.engine.jdbc.spi.JdbcServices;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SessionImplementor;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.engine.transaction.spi.IsolationDelegate;
import org.hibernate.internal.util.MutableInteger;
import org.hibernate.metamodel.mapping.EntityMappingType;
import org.hibernate.query.ComparisonOperator;
import org.hibernate.query.NavigablePath;
Expand Down Expand Up @@ -86,7 +85,7 @@ public static int saveMatchingIdsIntoIdTable(

matchingIdSelection.getFromClause().addRoot( mutatingTableGroup );

final AtomicInteger positionWrapper = new AtomicInteger();
final MutableInteger positionWrapper = new MutableInteger();

mutatingEntityDescriptor.getIdentifierMapping().visitColumns(
(containingTableExpression, columnExpression, jdbcMapping) -> {
Expand Down
Expand Up @@ -12,7 +12,6 @@
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
Expand All @@ -21,6 +20,7 @@
import org.hibernate.engine.jdbc.spi.JdbcServices;
import org.hibernate.engine.spi.SessionFactoryImplementor;
import org.hibernate.engine.spi.SharedSessionContractImplementor;
import org.hibernate.internal.util.MutableInteger;
import org.hibernate.metamodel.mapping.ColumnConsumer;
import org.hibernate.metamodel.mapping.EntityMappingType;
import org.hibernate.metamodel.mapping.ForeignKeyDescriptor;
Expand All @@ -40,6 +40,7 @@
import org.hibernate.sql.ast.tree.delete.DeleteStatement;
import org.hibernate.sql.ast.tree.expression.ColumnReference;
import org.hibernate.sql.ast.tree.expression.Expression;
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
import org.hibernate.sql.ast.tree.expression.SqlTuple;
import org.hibernate.sql.ast.tree.from.TableGroup;
import org.hibernate.sql.ast.tree.from.TableReference;
Expand All @@ -48,7 +49,6 @@
import org.hibernate.sql.ast.tree.select.QuerySpec;
import org.hibernate.sql.exec.spi.ExecutionContext;
import org.hibernate.sql.exec.spi.JdbcDelete;
import org.hibernate.sql.ast.tree.expression.JdbcParameter;
import org.hibernate.sql.exec.spi.JdbcParameterBindings;

import org.jboss.logging.Logger;
Expand Down Expand Up @@ -178,7 +178,7 @@ private int executeWithoutIdTable(
rootEntityPersister = sessionFactory.getDomainModel().findEntityDescriptor( rootEntityName );
}

final AtomicInteger rows = new AtomicInteger();
final MutableInteger rows = new MutableInteger();

final String rootTableName = ( (Joinable) rootEntityPersister ).getTableName();
final TableReference rootTableReference = tableGroup.resolveTableReference( rootTableName );
Expand Down

0 comments on commit 5c11778

Please sign in to comment.