Skip to content

Commit 97229f6

Browse files
committed
for memory management
1 parent 22a39e9 commit 97229f6

File tree

11 files changed

+51
-18
lines changed

11 files changed

+51
-18
lines changed

backend/service.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ spec:
1818
env:
1919
- name: SPRING_PROFILES_ACTIVE
2020
value: "prod"
21+
22+
- name: JAVA_TOOL_OPTIONS
23+
value: "-XX:MaxRAMPercentage=75.0 -XX:ActiveProcessorCount=2 -XX:+UseG1GC -XX:+ExitOnOutOfMemoryError"
2124

2225
- name: JDBC_URL
2326
valueFrom:

backend/src/main/java/com/thughari/jobtrackerpro/config/AsyncConfig.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ public class AsyncConfig {
1515

1616
@Bean(name = "dashboardExecutor")
1717
public AsyncTaskExecutor dashboardExecutor() {
18-
return new TaskExecutorAdapter(
19-
Executors.newThreadPerTaskExecutor(Thread.ofVirtual().name("DashVT-", 0).factory()));
18+
return new TaskExecutorAdapter(Executors.newThreadPerTaskExecutor(Thread.ofVirtual().name("DashVT-", 0).factory()));
2019
}
2120

2221
@Primary

backend/src/main/java/com/thughari/jobtrackerpro/config/CacheConfig.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ CacheManager cacheManager() {
1919
CaffeineCacheManager cacheManager = new CaffeineCacheManager();
2020

2121
cacheManager.setCaffeine(Caffeine.newBuilder()
22-
.initialCapacity(100)
23-
.maximumSize(500)
24-
.expireAfterWrite(30, TimeUnit.MINUTES)
22+
.initialCapacity(50)
23+
.maximumSize(250)
24+
.expireAfterWrite(10, TimeUnit.MINUTES)
2525
.recordStats());
2626

2727
return cacheManager;

backend/src/main/java/com/thughari/jobtrackerpro/entity/Job.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,5 +47,5 @@ public class Job {
4747
private String url;
4848

4949
@Column(columnDefinition = "TEXT")
50-
private String notes; //ALTER TABLE jobs ALTER COLUMN notes TYPE TEXT;
50+
private String notes;
5151
}

backend/src/main/java/com/thughari/jobtrackerpro/service/EmailService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public void sendResetEmail(String to, String token) {
7070
}
7171
}
7272

73-
@Async
73+
@Async("taskExecutor")
7474
public void sendForwardingHelper(String to, String code, String link) {
7575
try {
7676
MimeMessage message = mailSender.createMimeMessage();

backend/src/main/java/com/thughari/jobtrackerpro/service/GeminiExtractionService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ private String buildBatchPrompt(List<EmailBatchItem> items) {
104104
String rawBody = item.body() == null ? "" : item.body();
105105

106106
String trimmed = UrlParser.trimNoise(rawBody);
107-
String safeBody = trimmed.length() > 6000
108-
? trimmed.substring(0, 6000)
107+
String safeBody = trimmed.length() > 3000
108+
? trimmed.substring(0, 3000 )
109109
: trimmed;
110110

111111
List<String> urls = UrlParser.extractAndCleanUrls(rawBody);

backend/src/main/java/com/thughari/jobtrackerpro/service/GmailIntegrationService.java

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@
3131
import java.time.LocalDateTime;
3232
import java.time.ZoneOffset;
3333
import java.util.ArrayList;
34+
import java.util.LinkedHashSet;
3435
import java.util.List;
36+
import java.util.Set;
3537

3638
@Service
3739
@Slf4j
@@ -55,7 +57,41 @@ public class GmailIntegrationService {
5557
}
5658
}
5759

58-
private static final String ATS_FILTER = "from:(myworkday.com OR greenhouse.io OR lever.co OR smartrecruiters.com OR icims.com OR jobvite.com OR bamboo.hr OR workablemail.com OR successfactors.com OR taleo.net OR avature.net OR jobs2careers.com OR ziprecruiter.com OR monster.com OR careerbuilder.com OR wellfound.com OR lu.ma OR breezy.hr OR jazzhr.com OR comeet.com OR recruitee.com OR teamtailor.com OR applytojob.com OR jobs.github.com OR hackerrankforwork.com OR hackerrank.com OR hackerearth.com OR codility.com OR testgorilla.com OR hirevue.com OR vidcruiter.com OR codemetry.com OR pymetrics.com OR hired.com OR triplebyte.com OR newtonsoftware.com OR jobadder.com OR jobscore.com OR jobsoid.com OR jobplex.com OR jobdroid.com OR jobiak.com OR jobg8.com OR jobisjob.com OR jobrapido.com OR simplyhired.com OR glassdoor.com OR indeed.com OR remoteok.io OR weworkremotely.com OR remote.co OR angel.co OR stackoverflow.com)";
60+
private static final List<String> MAJOR_ATS = List.of(
61+
"myworkday.com", "greenhouse.io", "lever.co", "smartrecruiters.com",
62+
"icims.com", "jobvite.com", "bamboo.hr", "workablemail.com",
63+
"successfactors.com", "taleo.net", "avature.net", "newtonsoftware.com"
64+
);
65+
66+
private static final List<String> JOB_BOARDS = List.of(
67+
"linkedin.com", "indeed.com", "glassdoor.com", "ziprecruiter.com",
68+
"monster.com", "careerbuilder.com", "simplyhired.com", "careerjet.com"
69+
);
70+
71+
private static final List<String> TECH_REMOTE = List.of(
72+
"wellfound.com", "angel.co", "stackoverflow.com", "remoteok.io",
73+
"weworkremotely.com", "flexjobs.com", "workingnomads.co", "remote.co",
74+
"remotive.io", "jobs.github.com", "hackerrank.com", "hackerearth.com", "codility.com"
75+
);
76+
77+
private static final List<String> DESIGN_CREATIVE = List.of(
78+
"dribbble.com", "behance.net", "coroflot.com", "99designs.com",
79+
"artstation.com", "creativepool.com", "krop.com"
80+
);
81+
82+
public static final String ATS_FILTER;
83+
84+
static {
85+
Set<String> allDomains = new LinkedHashSet<>();
86+
allDomains.addAll(MAJOR_ATS);
87+
allDomains.addAll(JOB_BOARDS);
88+
allDomains.addAll(TECH_REMOTE);
89+
allDomains.addAll(DESIGN_CREATIVE);
90+
91+
ATS_FILTER = "from:(" + String.join(" OR ", allDomains) + ")";
92+
}
93+
94+
// private static final String ATS_FILTER = "from:(myworkday.com OR greenhouse.io OR lever.co OR smartrecruiters.com OR icims.com OR jobvite.com OR bamboo.hr OR workablemail.com OR successfactors.com OR taleo.net OR avature.net OR jobs2careers.com OR ziprecruiter.com OR monster.com OR careerbuilder.com OR wellfound.com OR lu.ma OR breezy.hr OR jazzhr.com OR comeet.com OR recruitee.com OR teamtailor.com OR applytojob.com OR jobs.github.com OR hackerrankforwork.com OR hackerrank.com OR hackerearth.com OR codility.com OR testgorilla.com OR hirevue.com OR vidcruiter.com OR codemetry.com OR pymetrics.com OR hired.com OR triplebyte.com OR newtonsoftware.com OR jobadder.com OR jobscore.com OR jobsoid.com OR jobplex.com OR jobdroid.com OR jobiak.com OR jobg8.com OR jobisjob.com OR jobrapido.com OR simplyhired.com OR glassdoor.com OR indeed.com OR remoteok.io OR weworkremotely.com OR remote.co OR angel.co OR stackoverflow.com)";
5995
private static final String SUBJECT_FILTER = "subject:(Application OR Applied OR Applying OR Thanks OR \"Thank You\" OR Received OR Confirmation OR Interview OR Status OR Sollicitatie OR Engineer OR Developer OR Analyst OR Scientist OR Specialist OR Invitation OR Invite OR Assessment OR Challenge OR Test OR Screened OR Position OR Declaration OR Talent OR Opportunity OR Role OR Job OR Opening OR Opened OR Lead OR Recruiter OR HR OR \"Human Resources\" OR Hiring OR Resume OR CV)";
6096
private static final String EXCLUSIONS = " -\"payment\" -\"invoice\" -\"otp\" -\"transaction\" -\"statement\" -\"bank\" -\"security alert\" -\"verification code\"";
6197

backend/src/main/java/com/thughari/jobtrackerpro/service/GmailWebhookService.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,11 @@
1111
import com.thughari.jobtrackerpro.interfaces.GeminiService;
1212
import com.thughari.jobtrackerpro.repo.UserRepository;
1313
import com.thughari.jobtrackerpro.util.CacheEvictService;
14-
import com.thughari.jobtrackerpro.util.UrlParser;
1514

1615
import lombok.extern.slf4j.Slf4j;
1716
import org.springframework.beans.factory.annotation.Value;
18-
import org.springframework.cache.Cache;
19-
import org.springframework.cache.CacheManager;
2017
import org.springframework.scheduling.annotation.Async;
2118
import org.springframework.stereotype.Service;
22-
import org.springframework.transaction.annotation.Transactional;
2319

2420
import java.math.BigInteger;
2521
import java.time.Instant;

backend/src/main/java/com/thughari/jobtrackerpro/service/JobService.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111

1212
import lombok.extern.slf4j.Slf4j;
1313
import org.springframework.beans.BeanUtils;
14-
import org.springframework.cache.Cache;
1514
import org.springframework.cache.CacheManager;
1615
import org.springframework.cache.annotation.CacheEvict;
1716
import org.springframework.cache.annotation.Cacheable;

backend/src/main/java/com/thughari/jobtrackerpro/util/UrlParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@ public static String trimNoise(String body) {
3232
int index = body.indexOf(marker);
3333
if (index > 0) body = body.substring(0, index);
3434
}
35-
return body.length() > 5000 ? body.substring(0, 5000) : body;
35+
return body.length() > 3000 ? body.substring(0, 3000 ) : body;
3636
}
3737
}

0 commit comments

Comments
 (0)