-
Notifications
You must be signed in to change notification settings - Fork 0
Removed xmlrpc/pingomatic ping service #39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: coderabbit_full_base_removed_xmlrpc_pingomatic_ping_service_pr1
Are you sure you want to change the base?
Conversation
Pingomatic is a legacy blog ping service that is no longer relevant for modern SEO or content distribution. The service was disabled by default and added unnecessary complexity to the codebase.
WalkthroughXML-RPC post pinging service is completely removed from the codebase, along with its associated tests and configuration. Service initialization in boot.js is streamlined by removing the xmlrpc service import and listener calls. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
ghost/core/core/boot.js (1)
349-368: Preserve init ordering for emailAddressService dependency.The note says newsletter/email services depend on email address service, but
emailAddressService.init()now runs in parallel withemailService.init(). This makes the dependency nondeterministic and can cause startup failures or partial initialization.Consider initializing
emailAddressServicebefore the parallel block.✅ Suggested fix
- await Promise.all([ - emailAddressService.init(), + await emailAddressService.init(); + + await Promise.all([ identityTokens.init(), memberAttribution.init(), mentionsService.init(), mentionsEmailReport.init(), staffService.init(), members.init(), tiers.init(), tagsPublic.init(), postsPublic.init(), membersEvents.init(), permissions.init(), audienceFeedback.init(), emailService.init(), emailAnalytics.init(), webhooks.listen(), scheduling.init(), comments.init(), linkTracking.init(), emailSuppressionList.init(), slackNotifications.init(), mediaInliner.init(), donationService.init(), recommendationsService.init(), statsService.init(), explorePingService.init() ]);
🤖 Fix all issues with AI agents
In `@ghost/core/core/boot.js`:
- Around line 366-369: scheduling.init() is being called without the required
apiUrl causing PostScheduler to throw; update the boot sequence to call
scheduling.init(...) passing the API URL option used to construct PostScheduler
(the same options.apiUrl passed in post-scheduling/index.js to PostScheduler),
i.e. locate the scheduling.init() call in core/boot.js and supply the apiUrl
from the boot options/context so PostScheduler (PostScheduler.js) receives
apiUrl and does not raise IncorrectUsageError.
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
ghost/core/core/boot.jsghost/core/core/server/services/xmlrpc.jsghost/core/core/shared/config/env/config.development.jsonghost/core/test/unit/server/services/xmlrpc.test.js
💤 Files with no reviewable changes (3)
- ghost/core/core/server/services/xmlrpc.js
- ghost/core/core/shared/config/env/config.development.json
- ghost/core/test/unit/server/services/xmlrpc.test.js
✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.
| emailAnalytics.init(), | ||
| webhooks.listen(), | ||
| scheduling.init({ | ||
| apiUrl: urlUtils.urlFor('api', {type: 'admin'}, true) | ||
| }), | ||
| scheduling.init(), | ||
| comments.init(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Search for scheduling-related files
echo "=== Searching for scheduling adapter files ==="
fd "scheduling" --type f -E node_modules | head -20
echo ""
echo "=== Searching for scheduling.init() implementations ==="
rg "scheduling.*init\s*\(" --type js -A 5 -B 2 | head -50
echo ""
echo "=== Searching for init method in adapter files ==="
rg -t js "^\s*init\s*\(" | grep -i scheduling | head -20Repository: qodo-benchmark/Ghost-combined-coderabbit
Length of output: 1022
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Look for the scheduling adapter in ghost/core
find ghost/core -name "*scheduling*" -type f 2>/dev/null | head -20Repository: qodo-benchmark/Ghost-combined-coderabbit
Length of output: 434
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Search for adapter files more broadly
find . -path ./node_modules -prune -o -name "adapter*" -type f -print 2>/dev/null | grep -i schedul
# Also search for init files
find . -path ./node_modules -prune -o -name "*.js" -type f -print 2>/dev/null | xargs grep -l "scheduling.*init" | head -10Repository: qodo-benchmark/Ghost-combined-coderabbit
Length of output: 66
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "=== scheduling-default.js ==="
cat -n ghost/core/core/server/adapters/scheduling/scheduling-default.js
echo ""
echo "=== scheduling-base.js ==="
cat -n ghost/core/core/server/adapters/scheduling/scheduling-base.jsRepository: qodo-benchmark/Ghost-combined-coderabbit
Length of output: 13105
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Check size first
wc -l ghost/core/core/server/adapters/scheduling/scheduling-default.js
wc -l ghost/core/core/server/adapters/scheduling/scheduling-base.jsRepository: qodo-benchmark/Ghost-combined-coderabbit
Length of output: 216
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "=== boot.js context around line 366-369 ==="
sed -n '340,400p' ghost/core/core/boot.js
echo ""
echo "=== Searching for scheduling initialization/import in boot.js ==="
rg -n "scheduling\s*=" ghost/core/core/boot.js -B 3 -A 3Repository: qodo-benchmark/Ghost-combined-coderabbit
Length of output: 2557
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "=== post-scheduling-service.js content ==="
wc -l ghost/core/core/server/services/posts/post-scheduling-service.js
head -150 ghost/core/core/server/services/posts/post-scheduling-service.jsRepository: qodo-benchmark/Ghost-combined-coderabbit
Length of output: 3558
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "=== Files in scheduling adapter directory ==="
ls -la ghost/core/core/server/adapters/scheduling/
echo ""
echo "=== Look for index.js or check package structure ==="
find ghost/core/core/server/adapters/scheduling -name "*.js" -type f | sortRepository: qodo-benchmark/Ghost-combined-coderabbit
Length of output: 1165
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "=== Checking for index.js or wrapper ==="
find ghost/core/core/server/adapters/scheduling -maxdepth 1 -name "index.js" -o -name "wrapper.js"
echo ""
echo "=== Searching for init function in scheduling adapter ==="
rg -n "init\s*\(" ghost/core/core/server/adapters/scheduling/ --type jsRepository: qodo-benchmark/Ghost-combined-coderabbit
Length of output: 330
🏁 Script executed:
#!/bin/bash
set -euoripefail
echo "=== scheduling adapter index.js ==="
cat -n ghost/core/core/server/adapters/scheduling/index.js
echo ""
echo "=== PostScheduler.js ==="
cat -n ghost/core/core/server/adapters/scheduling/post-scheduling/PostScheduler.js
echo ""
echo "=== post-scheduling/index.js ==="
cat -n ghost/core/core/server/adapters/scheduling/post-scheduling/index.jsRepository: qodo-benchmark/Ghost-combined-coderabbit
Length of output: 758
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "=== scheduling adapter index.js ==="
cat -n ghost/core/core/server/adapters/scheduling/index.js
echo ""
echo "=== PostScheduler.js ==="
cat -n ghost/core/core/server/adapters/scheduling/post-scheduling/PostScheduler.js
echo ""
echo "=== post-scheduling/index.js ==="
cat -n ghost/core/core/server/adapters/scheduling/post-scheduling/index.jsRepository: qodo-benchmark/Ghost-combined-coderabbit
Length of output: 6504
scheduling.init() is missing required apiUrl parameter.
In post-scheduling/index.js line 46, the PostScheduler constructor receives apiUrl: options.apiUrl, and the PostScheduler class (line 10 in PostScheduler.js) explicitly throws an IncorrectUsageError if apiUrl is missing. Since scheduling.init() is called without arguments in boot.js, this will cause a boot failure. The adapter does not fall back to deriving the URL from config—the parameter must be passed to init().
🤖 Prompt for AI Agents
In `@ghost/core/core/boot.js` around lines 366 - 369, scheduling.init() is being
called without the required apiUrl causing PostScheduler to throw; update the
boot sequence to call scheduling.init(...) passing the API URL option used to
construct PostScheduler (the same options.apiUrl passed in
post-scheduling/index.js to PostScheduler), i.e. locate the scheduling.init()
call in core/boot.js and supply the apiUrl from the boot options/context so
PostScheduler (PostScheduler.js) receives apiUrl and does not raise
IncorrectUsageError.
Benchmark PR from agentic-review-benchmarks#1
Summary by CodeRabbit
Release Notes
Removed Features
Chores
✏️ Tip: You can customize this high-level summary in your review settings.