This is an automated email from the ASF dual-hosted git repository.
markusthoemmes pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk.git
The following commit(s) were added to refs/heads/master by this push:
new bcd32ed Manually create user log files with correct permissions.
(#3903)
bcd32ed is described below
commit bcd32ed3549cd7b31ddc33c2de77fd597d456a8a
Author: James Dubee <[email protected]>
AuthorDate: Tue Jul 31 07:42:16 2018 -0400
Manually create user log files with correct permissions. (#3903)
Do not rely on LogRotatorSink to create user log files. Instead manually
create the user log files with custom permissions.
---
.../logging/DockerToActivationFileLogStore.scala | 19 +++++++++++++++----
1 file changed, 15 insertions(+), 4 deletions(-)
diff --git
a/common/scala/src/main/scala/whisk/core/containerpool/logging/DockerToActivationFileLogStore.scala
b/common/scala/src/main/scala/whisk/core/containerpool/logging/DockerToActivationFileLogStore.scala
index 0f3b440..e477696 100644
---
a/common/scala/src/main/scala/whisk/core/containerpool/logging/DockerToActivationFileLogStore.scala
+++
b/common/scala/src/main/scala/whisk/core/containerpool/logging/DockerToActivationFileLogStore.scala
@@ -17,7 +17,9 @@
package whisk.core.containerpool.logging
-import java.nio.file.{Path, Paths}
+import java.nio.file.{Files, Path, Paths}
+import java.nio.file.attribute.PosixFilePermission.{GROUP_READ, GROUP_WRITE,
OTHERS_READ, OWNER_READ, OWNER_WRITE}
+import java.util.EnumSet
import java.time.Instant
import akka.NotUsed
@@ -75,6 +77,7 @@ class DockerToActivationFileLogStore(system: ActorSystem,
destinationDirectory:
* once the defined limit is reached.
*/
val bufferSize = 100.MB
+ val perms = EnumSet.of(OWNER_READ, OWNER_WRITE, GROUP_READ, GROUP_WRITE,
OTHERS_READ)
protected val writeToFile: Sink[ByteString, _] = MergeHub
.source[ByteString]
.batchWeighted(bufferSize.toBytes, _.length, identity)(_ ++ _)
@@ -87,9 +90,17 @@ class DockerToActivationFileLogStore(system: ActorSystem,
destinationDirectory:
val size = element.size
if (bytesRead + size > maxSize) {
bytesRead = size
- val newLogFile =
destinationDirectory.resolve(s"userlogs-${Instant.now.toEpochMilli}.log")
- logging.info(this, s"Rotating log file to '$newLogFile'")
- Some(newLogFile)
+ val logFilePath =
destinationDirectory.resolve(s"userlogs-${Instant.now.toEpochMilli}.log")
+ logging.info(this, s"Rotating log file to '$logFilePath'")
+ try {
+ Files.createFile(logFilePath)
+ Files.setPosixFilePermissions(logFilePath, perms)
+ } catch {
+ case t: Throwable =>
+ logging.error(this, s"Couldn't create userlogs file: $t")
+ throw t
+ }
+ Some(logFilePath)
} else {
bytesRead += size
None