Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Core: Avoid slowdowns or deadlocks by reducing the number of scroll SQL queries usage wherever possible.
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ private void performBinaryCheck(Long id) {
ContentDao contentDao = tx.contentDao();

tx.binaryDao().findByCheckStatus(BinaryCheckStatus.POSTPONED).runInExistingTx(tx).forEach(binary -> {
Optional<? extends HibBinaryField> field = tx.binaryDao().findFields(binary).stream().findFirst();
Optional<? extends HibBinaryField> field = tx.binaryDao().findFields(binary).stream().findAny();

if (field.isEmpty()) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public boolean requiresChanges(ChangelogDao dao, Predicate<? super HighLevelChan
if (filter != null) {
stream = stream.filter(filter);
}
return stream.filter(change -> !isApplied(dao, change)).findFirst().isPresent();
return stream.filter(change -> !isApplied(dao, change)).findAny().isPresent();
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ public Path findByProjectPath(InternalActionContext ac, String path, ContainerTy

// Handle path to project root (baseNode)
if ("/".equals(strippedPath) || strippedPath.isEmpty()) {
Optional<HibNodeFieldContainer> container = contentDao.getFieldContainers(baseNode, branch, type).stream().findFirst();
Optional<HibNodeFieldContainer> container = contentDao.getFieldContainers(baseNode, branch, type).stream().findAny();
if (container.isPresent()) {
nodePath.addSegment(new PathSegmentImpl(container.get(), null, null, "/"));
stack.push("/");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ private void electMaster() {
log.info("Locked for master election");
Optional<Member> foundMaster = cluster.getMembers().stream()
.filter(m -> isMaster(m))
.findFirst();
.findAny();
boolean hasMaster = foundMaster.isPresent();
boolean isElectible = isElectable(localMember());
if (!hasMaster && isElectible) {
Expand Down Expand Up @@ -206,7 +206,7 @@ private boolean isElectable(Member member) {
}

ClusterConfigResponse config = database.loadClusterConfig();
Optional<ClusterServerConfig> databaseServer = config.getServers().stream().filter(s -> s.getName().equals(name)).findFirst();
Optional<ClusterServerConfig> databaseServer = config.getServers().stream().filter(s -> s.getName().equals(name)).findAny();
if (databaseServer.isPresent()) {
// Replicas are not eligible for master election
ServerRole role = databaseServer.get().getRole();
Expand Down Expand Up @@ -281,7 +281,7 @@ protected void findCurrentMaster() {
Cluster cluster = hazelcast.get().getCluster();
Optional<Member> master = cluster.getMembers().stream()
.filter(m -> isMaster(m))
.findFirst();
.findAny();
if (master.isPresent()) {
masterMember = master.get();
log.info("Updated master member {" + masterMember.getUuid() + "}");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -408,7 +408,7 @@ protected void processHits(JsonArray hits, Map<String, String> versions) {
private Flowable<SearchRequest> diffAndSync(HibProject project, HibBranch branch, HibSchemaVersion version, ContainerType type, Optional<Pattern> indexPattern) {
// if an index pattern is given, check whether any index matches the pattern
if (indexPattern.isPresent() && !getIndexNames(project, branch, version, type).stream()
.filter(indexName -> indexPattern.orElse(MATCH_ALL).matcher(indexName).matches()).findFirst()
.filter(indexName -> indexPattern.orElse(MATCH_ALL).matcher(indexName).matches()).findAny()
.isPresent()) {
return Flowable.empty();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1218,7 +1218,7 @@ default Map<HibNode, String> getPaths(Collection<HibNode> sourceNodes, InternalA
@Override
default Map<HibNode, String> getPaths(Collection<HibNode> sourceNodes, String branchUuid, InternalActionContext ac, ContainerType type, String... languageTags) {
BranchDao branchDao = Tx.get().branchDao();
HibBranch branch = sourceNodes.stream().map(node -> branchDao.findByUuid(node.getProject(), branchUuid)).findFirst().orElse(null);
HibBranch branch = sourceNodes.stream().map(node -> branchDao.findByUuid(node.getProject(), branchUuid)).findAny().orElse(null);
return getPaths(sourceNodes, branch, ac, type, languageTags);
}

Expand Down Expand Up @@ -1269,7 +1269,7 @@ default Map<HibNode, String> getPaths(Collection<HibNode> sourceNodes, HibBranch
String fallbackPath = null;
if (containerForUrlFieldValues != null) {
fallbackPath = contentDao.getUrlFieldValues(containerForUrlFieldValues)
.findFirst()
.findAny()
.map(path -> getWithSanitizedPathPrefix(branch, builder -> builder.append(path)))
.orElse(null);
}
Expand Down Expand Up @@ -1398,7 +1398,7 @@ private String getUrlFieldPath(HibNode node, HibBranch branch, ContainerType typ
return Stream.of(languages)
.flatMap(language -> Stream.ofNullable(contentDao.getFieldContainer(node, language, branch != null ? branch.getUuid() : null, type)))
.flatMap(contentDao::getUrlFieldValues)
.findFirst()
.findAny()
.map(path -> getWithSanitizedPathPrefix(branch, builder -> builder.append(path)))
.orElse(null);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.gentics.mesh.database.HibernateDatabase;
import com.gentics.mesh.database.HibernateTx;
import com.gentics.mesh.hibernate.data.domain.HibBinaryImpl;
import com.gentics.mesh.hibernate.util.HibernateUtil;
import com.gentics.mesh.util.UUIDUtil;

/**
Expand All @@ -33,25 +34,19 @@ public HibBinariesImpl(HibernateDatabase database) {

@Override
public Transactional<HibBinary> findByUuid(String uuid) {
return database.transactional((tx) -> tx.<HibernateTx>unwrap()
return database.transactional((tx) -> HibernateUtil.firstOrNull(tx.<HibernateTx>unwrap()
.entityManager()
.createNamedQuery("binary.findByUuids", HibBinary.class)
.setParameter("uuids", Set.of(UUIDUtil.toJavaUuid(uuid)))
.getResultStream()
.findAny()
.orElse(null));
.setParameter("uuids", Set.of(UUIDUtil.toJavaUuid(uuid)))));
}

@Override
public Transactional<HibBinary> findByHash(String SHA512Sum) {
return database.transactional((tx) -> {
HibernateTx hibTx = (HibernateTx) tx;

return hibTx.entityManager().createNamedQuery("binary.findBySHA", HibBinaryImpl.class)
.setParameter("SHA512Sum", SHA512Sum)
.getResultStream()
.findFirst()
.orElse(null);
return HibernateUtil.firstOrNull(hibTx.entityManager().createNamedQuery("binary.findBySHA", HibBinaryImpl.class)
.setParameter("SHA512Sum", SHA512Sum));
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@
import static com.gentics.mesh.hibernate.util.HibernateUtil.firstOrNull;
import static io.netty.handler.codec.http.HttpResponseStatus.BAD_REQUEST;

import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.function.Predicate;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

import jakarta.persistence.EntityManager;

import com.gentics.graphqlfilter.filter.operation.FilterOperation;
import com.gentics.mesh.context.InternalActionContext;
import com.gentics.mesh.core.data.branch.HibBranch;
Expand Down Expand Up @@ -43,12 +42,13 @@
import com.gentics.mesh.hibernate.data.domain.HibUpdateSchemaChangeImpl;
import com.gentics.mesh.hibernate.data.permission.HibPermissionRoots;
import com.gentics.mesh.hibernate.event.EventFactory;
import com.gentics.mesh.hibernate.util.HibernateUtil;
import com.gentics.mesh.parameter.PagingParameters;
import com.gentics.mesh.util.StreamUtil;
import com.gentics.mesh.util.UUIDUtil;

import dagger.Lazy;
import io.vertx.core.Vertx;
import jakarta.persistence.EntityManager;

/**
* Partial implementation of common parts for entity container DAOs.
Expand Down Expand Up @@ -114,17 +114,17 @@ public HibSchemaChange<?> createPersistedChange(SCV version, SchemaChangeOperati
return schemaChange;
}

@SuppressWarnings("unchecked")
@Override
public Iterable<SCV> findAllVersions(SC schema) {
EntityManager em = currentTransaction.getEntityManager();
return StreamUtil.toIterable(
em.createQuery("select v" +
return (List<SCV>) em.createQuery("select v" +
" from " + getVersionFieldLabel() + "version v " +
" join v." + getVersionFieldLabel() + " s" +
" where s = :schema",
getVersionPersistenceClass())
.setParameter("schema", schema)
.getResultStream());
.getResultList();
}

@Override
Expand All @@ -137,24 +137,20 @@ public Result<SCV> findActiveSchemaVersions(HibBranch branch) {
" and e.active = true",
getVersionPersistenceClass())
.setParameter("branch", branch)
.getResultStream());
.getResultList());
}

@Override
public SCV findVersionByRev(SC schema, String version) {
EntityManager em = currentTransaction.getEntityManager();
return em.createQuery("select v" +
return HibernateUtil.firstOrNull(em.createQuery("select v" +
" from " + getVersionFieldLabel() + "version v" +
" join v." + getVersionFieldLabel() + " s" +
" where s = :schema" +
" and v.version = :version",
getVersionPersistenceClass())
.setParameter("schema", schema)
.setParameter("version", version)
.setMaxResults(1)
.getResultStream()
.findAny()
.orElse(null);
.setParameter("version", version));
}

@Override
Expand Down Expand Up @@ -229,7 +225,7 @@ public Result<? extends HibBranch> getBranches(SCV version) {
" where e.version = :version",
HibBranchImpl.class)
.setParameter("version", version)
.getResultStream());
.getResultList());
}

/**
Expand All @@ -252,18 +248,14 @@ public SC findByUuid(HibProject root, UUID uuid) {
*/
public SCV findVersionByUuid(SC schema, UUID versionUuid) {
EntityManager em = currentTransaction.getEntityManager();
return em.createQuery("select v" +
return HibernateUtil.firstOrNull(em.createQuery("select v" +
" from " + getVersionTableLabel() + " v" +
" join v." + getVersionFieldLabel() + " s" +
" where s = :schema" +
" and v.dbUuid = :uuid",
getVersionPersistenceClass())
.setParameter("schema", schema)
.setParameter("uuid", versionUuid)
.setMaxResults(1)
.getResultStream()
.findAny()
.orElse(null);
.setParameter("uuid", versionUuid));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,9 @@ public Binaries binaries() {
* @return entity or null
*/
public HibBinaryField getField(UUID contentUuid, String key) {
return em().createNamedQuery("binaryfieldref.findByContentAndKey", HibBinaryFieldImpl.class)
return HibernateUtil.firstOrNull(em().createNamedQuery("binaryfieldref.findByContentAndKey", HibBinaryFieldImpl.class)
.setParameter("contentUuid", contentUuid)
.setParameter("key", key)
.getResultStream()
.findFirst()
.orElse(null);
.setParameter("key", key));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,18 +91,16 @@ public void onRootDeleted(HibProject root) {
public void deletePersisted(HibProject root, HibBranch entity) {
em().createQuery("select j from job j where j.branch = :branch", HibJobImpl.class)
.setParameter("branch", entity)
.getResultStream()
.getResultList()
.forEach(job -> job.setBranch(null));
em().remove(entity);
}

@Override
public Result<? extends HibBranch> findAll(HibProject project) {
Stream<HibBranchImpl> branches = em().createNamedQuery("branch.findFromProject", HibBranchImpl.class)
return new TraversalResult<>(em().createNamedQuery("branch.findFromProject", HibBranchImpl.class)
.setParameter("project", project)
.getResultStream();

return new TraversalResult<>(branches.iterator());
.getResultList());
}

@Override
Expand Down Expand Up @@ -216,7 +214,7 @@ public HibBranchSchemaVersion findBranchSchemaEdge(HibBranch branch, HibSchemaVe
.setParameter("branch", branch)
.setParameter("schemaVersionDbUuid", UUIDUtil.toJavaUuid(schemaVersion.getUuid()));

return firstOrNull(query.getResultStream());
return firstOrNull(query);
}

@Override
Expand All @@ -228,7 +226,7 @@ public HibBranchMicroschemaVersion findBranchMicroschemaEdge(HibBranch branch, H
.setParameter("branch", branch)
.setParameter("microSchemaVersionDbUuid", UUIDUtil.toJavaUuid(microschemaVersion.getUuid()));

return firstOrNull(query.getResultStream());
return firstOrNull(query);
}

@Override
Expand Down
Loading