in core/invoker/src/main/scala/org/apache/openwhisk/core/containerpool/v2/FunctionPullingContainerProxy.scala [1274:1341]
def props(factory: (TransactionId,
String,
ImageName,
Boolean,
ByteSize,
Int,
Option[Double],
Option[ExecutableWhiskAction]) => Future[Container],
entityStore: ArtifactStore[WhiskEntity],
namespaceBlacklist: NamespaceBlacklist,
get: (ArtifactStore[WhiskEntity], DocId, DocRevision, Boolean, Boolean) => Future[WhiskAction],
dataManagementService: ActorRef,
clientProxyFactory: (ActorRefFactory,
String,
FullyQualifiedEntityName,
DocRevision,
String,
Int,
ContainerId) => ActorRef,
ack: ActiveAck,
store: (TransactionId, WhiskActivation, Boolean, UserContext) => Future[Any],
collectLogs: LogsCollector,
getLiveContainerCount: (String, FullyQualifiedEntityName, DocRevision) => Future[Long],
getWarmedContainerLimit: (String) => Future[(Int, FiniteDuration)],
instance: InvokerInstanceId,
invokerHealthManager: ActorRef,
poolConfig: ContainerPoolConfig,
timeoutConfig: ContainerProxyTimeoutConfig,
healthCheckConfig: ContainerProxyHealthCheckConfig =
loadConfigOrThrow[ContainerProxyHealthCheckConfig](ConfigKeys.containerProxyHealth),
tcp: Option[ActorRef] = None)(implicit actorSystem: ActorSystem, logging: Logging) =
Props(
new FunctionPullingContainerProxy(
factory,
entityStore,
namespaceBlacklist,
get,
dataManagementService,
clientProxyFactory,
ack,
store,
collectLogs,
getLiveContainerCount,
getWarmedContainerLimit,
instance,
invokerHealthManager,
poolConfig,
timeoutConfig,
healthCheckConfig,
tcp))
private val containerCount = new Counter
/**
* Generates a unique container name.
*
* @param prefix the container name's prefix
* @param suffix the container name's suffix
* @return a unique container name
*/
def containerName(instance: InvokerInstanceId, prefix: String, suffix: String): String = {
def isAllowed(c: Char): Boolean = c.isLetterOrDigit || c == '_'
val sanitizedPrefix = prefix.filter(isAllowed)
val sanitizedSuffix = suffix.filter(isAllowed)
s"${ContainerFactory.containerNamePrefix(instance)}_${containerCount.next()}_${sanitizedPrefix}_${sanitizedSuffix}"
}