azkaban-memoizeit

added memoizeit cache

7/7/2019 3:34:15 AM

Details

diff --git a/azkaban-common/build.gradle b/azkaban-common/build.gradle
index d747d52..658344f 100644
--- a/azkaban-common/build.gradle
+++ b/azkaban-common/build.gradle
@@ -14,13 +14,7 @@
  * the License.
  */
 
-plugins {
-    id "io.freefair.aspectj.post-compile-weaving" version "3.1.4"
-}
-
 dependencies {
-    aspect 'br.ufrgs.inf.prosoft.applicationtracer:ApplicationTracer:1.0'
-
     compile project(':az-core')
     compile project(':azkaban-spi')
     compile project(':azkaban-db')
diff --git a/azkaban-common/src/main/java/azkaban/project/ProjectManager.java b/azkaban-common/src/main/java/azkaban/project/ProjectManager.java
index b5a838a..16b3c8b 100644
--- a/azkaban-common/src/main/java/azkaban/project/ProjectManager.java
+++ b/azkaban-common/src/main/java/azkaban/project/ProjectManager.java
@@ -47,6 +47,9 @@ import javax.inject.Inject;
 import javax.inject.Singleton;
 import org.apache.log4j.Logger;
 
+import br.ufrgs.inf.prosoft.cache.SingleCache;
+import br.ufrgs.inf.prosoft.cache.Parameters;
+
 
 @Singleton
 public class ProjectManager {
@@ -165,15 +168,19 @@ public class ProjectManager {
     return array;
   }
 
+public static SingleCache<User, List<Project>> getGroupProjectsCache = new SingleCache<>("ProjectManager.getGroupProjects");
+
   public List<Project> getGroupProjects(final User user) {
-    final List<Project> array = new ArrayList<>();
-    // for (final Project project : this.projectsById.values()) {
-    for (final Project project : getProjects()) {
-      if (project.hasGroupPermission(user, Type.READ)) {
-        array.add(project);
+    return getGroupProjectsCache.computeIfAbsent(user, () -> {
+      final List<Project> array = new ArrayList<>();
+      // for (final Project project : this.projectsById.values()) {
+      for (final Project project : getProjects()) {
+        if (project.hasGroupPermission(user, Type.READ)) {
+          array.add(project);
+        }
       }
-    }
-    return array;
+      return array;
+    }, 1000);
   }
 
   public List<Project> getUserProjectsByRegex(final User user, final String regexPattern) {
@@ -512,9 +519,14 @@ public class ProjectManager {
    * @return ProjectFileHandler - null if can't find project zip file based on project name and
    * version
    */
+
+public static SingleCache<Parameters, ProjectFileHandler> getProjectFileHandlerCache = new SingleCache<>("ProjectManager.getProjectFileHandler");
+
   public ProjectFileHandler getProjectFileHandler(final Project project, final int version)
       throws ProjectManagerException {
-    return this.azkabanProjectLoader.getProjectFile(project, version);
+      return getProjectFileHandlerCache.computeIfAbsent(new Parameters(project, version), () -> {
+        return this.azkabanProjectLoader.getProjectFile(project, version);
+      }, 1000);
   }
 
   public Map<String, ValidationReport> uploadProject(final Project project,
diff --git a/azkaban-exec-server/build.gradle b/azkaban-exec-server/build.gradle
index ac5d5e6..8c01c99 100644
--- a/azkaban-exec-server/build.gradle
+++ b/azkaban-exec-server/build.gradle
@@ -14,15 +14,9 @@
  * the License.
  */
 
-plugins {
-    id "io.freefair.aspectj.post-compile-weaving" version "3.1.4"
-}
-
 apply plugin: 'distribution'
 
 dependencies {
-    aspect 'br.ufrgs.inf.prosoft.applicationtracer:ApplicationTracer:1.0'
-
     compile(project(':az-core'))
     compile(project(':azkaban-common'))
 

build.gradle 1(+1 -0)

diff --git a/build.gradle b/build.gradle
index b63e397..8650fc0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -165,6 +165,7 @@ subprojects {
         }
 
         dependencies {
+            compile "br.ufrgs.inf.prosoft.cache:Cache:1.0"
             compile deps.log4j
             compile deps.guice
             compile deps.slf4j

docker-compose.yml 10(+2 -8)

diff --git a/docker-compose.yml b/docker-compose.yml
index b213601..a845f1d 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -5,14 +5,8 @@ services:
     container_name: azkaban
     environment:
       - JAVA_OPTS=${JAVA_OPTS:-"-Xmx6124m"}
-      - TRACER_ENABLE=${TRACER_ENABLE:-true}
-      - TRACER_MINIMUM_EXECUTION_TIME=${TRACER_MINIMUM_EXECUTION_TIME:-1}
-      - TRACER_SERIALISE_INTERNALS=false
-      - TRACER_VERBOSE=true
-      - TRACER_TRACES=/caching-approaches-comparison/applications/traces/azkaban
-      - TRACER_IGNORED_PACKAGES=/caching-approaches-comparison/applications/uncached/azkaban/ignored
-      - TRACER_WHITELIST=/caching-approaches-comparison/applications/uncached/azkaban/whitelist
-      - TRACER_LOG=/caching-approaches-comparison/applications/output/azkaban-tracer.log
+      - CACHE_EVENTS=${CACHE_EVENTS:-/caching-approaches-comparison/applications/output/azkaban-memoizeit-cache}
+      - CACHE_REGISTER_SIZE=false
     volumes:
       - application:/application
       - /root/.gradle:/home/gradle/.gradle