NeahNew/MARK_ALL_READ_DIAGNOSTIC.md
2026-01-06 18:15:39 +01:00

4.2 KiB

Mark All As Read - Diagnostic Guide

Issue: Adapter returns false but no detailed logs appear


🔍 Current Situation

What We See:

[NOTIFICATION_SERVICE] Adapter leantime markAllAsRead result: false
[NOTIFICATION_SERVICE] markAllAsRead results: [ false ]
[NOTIFICATION_SERVICE] markAllAsRead overall success: false

What's Missing:

  • [NOTIFICATION_SERVICE] markAllAsRead called for user ...
  • [NOTIFICATION_SERVICE] Processing adapter: leantime
  • [NOTIFICATION_SERVICE] Calling markAllAsRead on adapter leantime
  • [LEANTIME_ADAPTER] ===== markAllAsRead START =====NEW: Very prominent marker

🚨 Possible Causes

1. Server Not Fully Restarted

Solution: Do a hard restart:

# Stop completely
sudo npm stop
# Or kill the process
sudo pkill -f "next start"

# Wait a few seconds
sleep 3

# Start fresh
sudo npm start

2. Next.js Build Cache

Solution: Clear cache and rebuild:

rm -rf .next
sudo npm start

3. Log Buffering/Filtering

Solution: Check if logs are being filtered. Look for ALL logs around the mark-all-as-read operation.

4. Code Not Deployed

Solution: Verify the file was saved and the server picked it up.


What to Look For After Restart

Expected Complete Log Flow

When you click "Mark all as read", you should see ALL of these logs:

[NOTIFICATION_API] Mark all as read endpoint called
[NOTIFICATION_API] Mark all as read - Processing { userId: '...', timestamp: '...' }
[NOTIFICATION_SERVICE] markAllAsRead called for user ...
[NOTIFICATION_SERVICE] Available adapters: leantime
[NOTIFICATION_SERVICE] Processing adapter: leantime
[NOTIFICATION_SERVICE] Adapter leantime is configured: true
[NOTIFICATION_SERVICE] Calling markAllAsRead on adapter leantime
[LEANTIME_ADAPTER] ===== markAllAsRead START =====  ← VERY PROMINENT
[LEANTIME_ADAPTER] markAllAsRead called for userId: ...
[LEANTIME_ADAPTER] API URL: ...
[LEANTIME_ADAPTER] Has API Token: true
[LEANTIME_ADAPTER] markAllAsRead - User email: ...
[LEANTIME_ADAPTER] markAllAsRead - Leantime user ID: ...
[LEANTIME_ADAPTER] markAllAsRead - Request body: {...}
[LEANTIME_ADAPTER] markAllAsRead - API URL: ...
[LEANTIME_ADAPTER] markAllAsRead - Response status: XXX
[LEANTIME_ADAPTER] markAllAsRead - Response body: {...}
[LEANTIME_ADAPTER] markAllAsRead - Parsed response: {...}
[LEANTIME_ADAPTER] markAllAsRead - API Error: {...}  ← This will show the actual error
[LEANTIME_ADAPTER] ===== markAllAsRead END (success: false) =====
[NOTIFICATION_SERVICE] Adapter leantime markAllAsRead result: false
[NOTIFICATION_SERVICE] markAllAsRead results: [ false ]
[NOTIFICATION_SERVICE] markAllAsRead overall success: false
[NOTIFICATION_SERVICE] Not invalidating caches - operation failed
[NOTIFICATION_API] Mark all as read - Failed { userId: '...', duration: '...ms' }

🎯 Critical Check

After restarting, search your logs for:

===== markAllAsRead START =====

If you DON'T see this line, the adapter method is NOT being called, which means:

  • Server not restarted properly
  • Code not deployed
  • Different code path being used

If you DO see this line, we'll have all the details we need to fix the Leantime API call.


📋 Action Items

  1. Hard Restart Server (stop completely, wait, start)
  2. Test Mark All As Read
  3. Search logs for ===== markAllAsRead START =====
  4. Share ALL logs from the mark-all-as-read operation
  5. Look for API Error: in the logs (this will show what Leantime is returning)

🔧 If Logs Still Don't Appear

If after restart you still don't see the ===== markAllAsRead START ===== log:

  1. Verify file was saved: Check lib/services/notifications/leantime-adapter.ts line 220-224
  2. Check for syntax errors: Run npm run build or check for TypeScript errors
  3. Verify server is using the file: Check if there are multiple versions or build artifacts
  4. Check log output: Make sure you're looking at the right log file/stream

Status: Enhanced logging with prominent markers added. Awaiting server restart and test.

Next: After restart, the ===== markAllAsRead START ===== marker will confirm the method is being called, and we'll see the exact Leantime API error.