mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
[ACS-9490] Use FixedThreadPool for ExecutorService (#3301)
Add property `local.transform.threadPoolSize=8` for controlling size of thread pool used for transforms.
This commit is contained in:
@@ -34,6 +34,7 @@ import java.util.Map;
|
|||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
|
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
@@ -66,6 +67,7 @@ public class LocalTransformClient implements TransformClient, InitializingBean
|
|||||||
private ContentService contentService;
|
private ContentService contentService;
|
||||||
private RenditionService2Impl renditionService2;
|
private RenditionService2Impl renditionService2;
|
||||||
private boolean directAccessUrlEnabled;
|
private boolean directAccessUrlEnabled;
|
||||||
|
private int threadPoolSize;
|
||||||
|
|
||||||
private ExecutorService executorService;
|
private ExecutorService executorService;
|
||||||
private ThreadLocal<LocalTransform> transform = new ThreadLocal<>();
|
private ThreadLocal<LocalTransform> transform = new ThreadLocal<>();
|
||||||
@@ -95,6 +97,11 @@ public class LocalTransformClient implements TransformClient, InitializingBean
|
|||||||
this.directAccessUrlEnabled = directAccessUrlEnabled;
|
this.directAccessUrlEnabled = directAccessUrlEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setThreadPoolSize(int threadPoolSize)
|
||||||
|
{
|
||||||
|
this.threadPoolSize = threadPoolSize;
|
||||||
|
}
|
||||||
|
|
||||||
public void setExecutorService(ExecutorService executorService)
|
public void setExecutorService(ExecutorService executorService)
|
||||||
{
|
{
|
||||||
this.executorService = executorService;
|
this.executorService = executorService;
|
||||||
@@ -108,9 +115,11 @@ public class LocalTransformClient implements TransformClient, InitializingBean
|
|||||||
PropertyCheck.mandatory(this, "contentService", contentService);
|
PropertyCheck.mandatory(this, "contentService", contentService);
|
||||||
PropertyCheck.mandatory(this, "renditionService2", renditionService2);
|
PropertyCheck.mandatory(this, "renditionService2", renditionService2);
|
||||||
PropertyCheck.mandatory(this, "directAccessUrlEnabled", directAccessUrlEnabled);
|
PropertyCheck.mandatory(this, "directAccessUrlEnabled", directAccessUrlEnabled);
|
||||||
|
PropertyCheck.mandatory(this, "threadPoolSize", threadPoolSize);
|
||||||
if (executorService == null)
|
if (executorService == null)
|
||||||
{
|
{
|
||||||
executorService = Executors.newCachedThreadPool();
|
var threadFactory = new ThreadFactoryBuilder().setNameFormat("local-transform-%d").build();
|
||||||
|
executorService = Executors.newFixedThreadPool(threadPoolSize, threadFactory);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -82,6 +82,7 @@
|
|||||||
<property name="contentService" ref="contentService" />
|
<property name="contentService" ref="contentService" />
|
||||||
<property name="renditionService2" ref="renditionService2" />
|
<property name="renditionService2" ref="renditionService2" />
|
||||||
<property name="directAccessUrlEnabled" value="${local.transform.directAccessUrl.enabled}"/>
|
<property name="directAccessUrlEnabled" value="${local.transform.directAccessUrl.enabled}"/>
|
||||||
|
<property name="threadPoolSize" value="${local.transform.threadPoolSize}" />
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="synchronousTransformClient" parent="localSynchronousTransformClient" />
|
<bean id="synchronousTransformClient" parent="localSynchronousTransformClient" />
|
||||||
|
@@ -1351,6 +1351,9 @@ restApi.directAccessUrl.defaultExpiryTimeInSec=30
|
|||||||
# Controls whether direct access url URLs may be used in transforms.
|
# Controls whether direct access url URLs may be used in transforms.
|
||||||
local.transform.directAccessUrl.enabled=true
|
local.transform.directAccessUrl.enabled=true
|
||||||
|
|
||||||
|
# Controls size of thread pool used for transforms.
|
||||||
|
local.transform.threadPoolSize=8
|
||||||
|
|
||||||
# Creates additional indexes on alf_node and alf_transaction. Recommended for large repositories.
|
# Creates additional indexes on alf_node and alf_transaction. Recommended for large repositories.
|
||||||
system.new-node-transaction-indexes.ignored=true
|
system.new-node-transaction-indexes.ignored=true
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user