You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rename _wheels_jobs to wheels_jobs for Oracle compatibility and fix BoxLang claim
Oracle requires unquoted identifiers to start with a letter, making _wheels_jobs
invalid. Renamed to wheels_jobs across all SQL, tests, and docs.
Removed transaction {} from $claimJob — auto-commit is sufficient and avoids
failures on BoxLang + PostgreSQL.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .ai/wheels/jobs/overview.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,7 @@
1
1
# Background Jobs
2
2
3
3
## Description
4
-
Wheels provides a database-backed job queue system for running tasks asynchronously. Jobs are persisted to a `_wheels_jobs` table, processed in priority order, and automatically retried with exponential backoff on failure.
4
+
Wheels provides a database-backed job queue system for running tasks asynchronously. Jobs are persisted to a `wheels_jobs` table, processed in priority order, and automatically retried with exponential backoff on failure.
5
5
6
6
## Key Points
7
7
- Jobs extend `wheels.Job` and implement a `perform()` method
@@ -17,7 +17,7 @@ Wheels provides a database-backed job queue system for running tasks asynchronou
17
17
```bash
18
18
wheels dbmigrate latest
19
19
```
20
-
This creates the `_wheels_jobs` table. The migration is at `app/migrator/migrations/20260221000001_create_wheels_jobs_table.cfc`.
20
+
This creates the `wheels_jobs` table. The migration is at `app/migrator/migrations/20260221000001_createwheels_jobs_table.cfc`.
Copy file name to clipboardExpand all lines: design_docs/FRAMEWORK-REVIEW.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -137,7 +137,7 @@ The native MCP server (`vendor/wheels/public/mcp/McpServer.cfc`) is a genuine di
137
137
138
138
**Impact:** Without a persistent job runner, background jobs cannot reliably execute. Email sending, report generation, and API syncs all require this.
139
139
140
-
**Recommendation:** Implement a database-backed job queue (following Rails' Solid Queue approach). Store jobs in a `_wheels_jobs` table with status, retry count, scheduled_at, and error tracking. A poll-based worker running as a CLI daemon (`wheels jobs work`) would complete the picture.
140
+
**Recommendation:** Implement a database-backed job queue (following Rails' Solid Queue approach). Store jobs in a `wheels_jobs` table with status, retry count, scheduled_at, and error tracking. A poll-based worker running as a CLI daemon (`wheels jobs work`) would complete the picture.
141
141
142
142
#### Gap 3: No Nested Resource Routes
143
143
@@ -234,7 +234,7 @@ Implement Server-Sent Events (SSE) as a lightweight first step:
234
234
### Priority 2: Complete the Job System (High Impact)
235
235
236
236
Turn the existing `wheels.Job` skeleton into a full system:
237
-
1. Database-backed queue table (`_wheels_jobs`)
237
+
1. Database-backed queue table (`wheels_jobs`)
238
238
2. CLI worker: `wheels jobs work --queue=default,high`
239
239
3. Retry with exponential backoff, max attempts, dead letter storage
Copy file name to clipboardExpand all lines: docs/src/working-with-wheels/background-jobs.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,7 +20,7 @@ First, create the jobs table by running the included migration:
20
20
wheels dbmigrate latest
21
21
```
22
22
23
-
This creates the `_wheels_jobs` table. The migration file is at `app/migrator/migrations/20260221000001_create_wheels_jobs_table.cfc`.
23
+
This creates the `wheels_jobs` table. The migration file is at `app/migrator/migrations/20260221000001_createwheels_jobs_table.cfc`.
24
24
25
25
### 2. Create a Job
26
26
@@ -228,7 +228,7 @@ Each job goes through these statuses:
228
228
229
229
## Database Schema
230
230
231
-
The `_wheels_jobs` table contains:
231
+
The `wheels_jobs` table contains:
232
232
233
233
| Column | Type | Description |
234
234
|--------|------|-------------|
@@ -355,4 +355,4 @@ The formula is `baseDelay * 2^attempt`, capped at `maxDelay`:
355
355
5.**Monitor the queue**: Use `wheels jobs monitor` or `queueStats()` to track queue health and alert on growing `failed` counts.
356
356
6.**Purge old jobs**: Run `wheels jobs purge` or `purgeCompleted()` on a schedule to prevent table bloat.
357
357
7.**Run multiple workers**: For higher throughput, run multiple `wheels jobs work` processes — optimistic locking prevents duplicate processing.
358
-
8.**Handle missing tables gracefully**: If the `_wheels_jobs` table doesn't exist yet, `enqueue()` will log a warning and return `persisted=false` instead of throwing an error.
358
+
8.**Handle missing tables gracefully**: If the `wheels_jobs` table doesn't exist yet, `enqueue()` will log a warning and return `persisted=false` instead of throwing an error.
0 commit comments