Skip to content

Commit fb53b04

Browse files
committed
refactor: Clean up unused code and improve error handling in various components
1 parent c2a93c9 commit fb53b04

File tree

8 files changed

+30
-31
lines changed

8 files changed

+30
-31
lines changed

client-test/src/components/ErrorRoutes.tsx

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,6 @@ export const NetworkErrorRoute: React.FC = () => {
5959

6060
// Unauthorized Page with context
6161
export const UnauthorizedRoute: React.FC = () => {
62-
const [setErrorContext] = useState<any>(null);
63-
64-
useEffect(() => {
65-
const stored = sessionStorage.getItem('authError');
66-
if (stored) {
67-
setErrorContext(JSON.parse(stored));
68-
// Clear the stored error after reading
69-
sessionStorage.removeItem('authError');
70-
}
71-
}, []);
72-
7362
return (
7463
<UnauthorizedPage />
7564
);

client-test/src/lib/axios.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,6 @@ axiosInstance.interceptors.request.use(
4848
// Response interceptor for handling global errors
4949
axiosInstance.interceptors.response.use(
5050
(response) => {
51-
// Log response time
52-
if (response.config?.metadata?.startTime) {
53-
const duration = Date.now() - response.config.metadata.startTime;
54-
console.log(`Request to ${response.config.url} took ${duration}ms`);
55-
}
5651
return response;
5752
},
5853
(error: AxiosError<ApiErrorResponse>) => {

server/app.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ app.use(helmet({
4848
referrerPolicy: { policy: "strict-origin-when-cross-origin" }
4949
}));
5050

51-
app.use(express.json({ limit: '2mb' }));
51+
app.use(express.json({ limit: '5mb' }));
5252

53-
app.use(express.urlencoded({ limit: '2mb', extended: false }));
53+
app.use(express.urlencoded({ limit: '5mb', extended: false }));
5454

5555
app.use(cookieParser());
5656
app.use(passport.initialize());

server/controllers/leaderboardController.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ export const getLeaderboardData = async (req, res) => {
6666

6767
// Ensure leaderboard is an array
6868
if (!Array.isArray(leaderboard)) {
69-
console.error("Leaderboard is not an array:", typeof leaderboard, leaderboard);
7069
leaderboard = [];
7170
}
7271

server/lib/db.js

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
import mongoose from "mongoose"
2+
const { default: cacheService } = await import("../services/cacheService.js");
3+
const { warmupLeaderboardCache } = await import("../utils/leaderBoardCache.js");
24

35
const connectDB = async () => {
46
try {
@@ -16,16 +18,25 @@ const connectDB = async () => {
1618
mongoose.connection.on('error', (error) => {
1719
console.error('Database connection error:', error.message);
1820
});
19-
20-
// Warmup leaderboard cache after DB is ready (with delay for Redis connection)
21-
setTimeout(async () => {
22-
try {
23-
const { warmupLeaderboardCache } = await import("../utils/leaderBoardCache.js");
24-
warmupLeaderboardCache();
25-
} catch (error) {
26-
console.error('Failed to warmup leaderboard cache:', error.message);
21+
22+
async function waitForRedisAndWarmup(attempt = 1) {
23+
const maxAttempts = 5;
24+
const delay = Math.min(1000 * Math.pow(2, attempt - 1), 10000); // exponential backoff, max 10s
25+
26+
if (cacheService.isRedisConnected()) {
27+
try {
28+
await warmupLeaderboardCache();
29+
} catch (error) {
30+
console.error('Failed to warmup leaderboard cache:', error.message);
31+
}
32+
} else if (attempt < maxAttempts) {
33+
setTimeout(() => waitForRedisAndWarmup(attempt + 1), delay);
34+
} else {
35+
console.error('Redis was not ready after maximum attempts. Skipping leaderboard cache warmup.');
2736
}
28-
}, 2000); // 2 second delay
37+
}
38+
39+
waitForRedisAndWarmup();
2940

3041
} catch (error) {
3142
console.error('Database connection failed:', error.message);

server/middleware/rateLimiter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,4 +126,4 @@ export const rateLimitMiddleware = (maxRequests = MAX_REQUESTS_PER_WINDOW, windo
126126
// Specific rate limiters for different operations
127127
export const challengeUpdateRateLimit = rateLimitMiddleware(5, 60000); // 5 requests per minute for challenge updates
128128
export const platformUpdateRateLimit = rateLimitMiddleware(3, 120000); // 3 requests per 2 minutes for platform updates
129-
export const registrationRateLimit = rateLimitMiddleware(5, 60000); // 5 registrations per minute (per IP/user) - prevents spam but allows legitimate usage
129+
export const registrationRateLimit = rateLimitMiddleware(3, 60000); // 5 registrations per minute (per IP/user) - prevents spam but allows legitimate usage

server/services/cacheService.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class CacheService {
7676
// Reset metrics
7777
this.metrics = { hits: 0, misses: 0, errors: 0, operations: 0 };
7878
}
79-
}, 5 * 60000); // Every 5 minute
79+
}, 5 * 60000); // Every 5 minutes
8080
}
8181

8282
// Generate cache key with namespace
@@ -268,6 +268,11 @@ class CacheService {
268268
metrics: { ...this.metrics }
269269
};
270270
}
271+
272+
// Check if Redis is connected (regardless of read-only status)
273+
isRedisConnected() {
274+
return this.redis !== null;
275+
}
271276
}
272277

273278
// Export singleton instance

server/utils/leaderBoardCache.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ export const warmupLeaderboardCache = async (maxRetries = 3) => {
220220
updateQueue.forEach(({ reject }) => reject(error));
221221
updateQueue = [];
222222

223-
audit.error(error);
223+
auditService.error(error);
224224
throw error;
225225
} finally {
226226
isUpdatingLeaderboard = false;

0 commit comments

Comments
 (0)