v0.1.9.2 - SmartCraft global submission cap
v0.1.9.2 — SmartCraft global submission cap (G13)
Throttles SmartCraft's parallel task dispatch so Programmable Hatches'
Auto CPU multiblock (TileCPU) can no longer be pushed into infinite
CraftingCPUCluster creation. Default cap = 50; set via
maxConcurrentSmartCraftSubmissions in
config/AE2-IntelligentScheduling.cfg (range 0-1024, 0 disables).
Why this exists
TileCPU.onPostTick mints a fresh CraftingCPUCluster every server
tick whenever every existing cluster is busy. SmartCraft's analyser
splits a single big order into hundreds of parallel tasks; each task
acquires a cluster and the Auto CPU just keeps allocating new ones
until the server tick is dominated by GC.
What the cap does
- Counts SmartCraft tasks currently holding an AE2
craftingLink
(i.e. occupying a cluster) across all orders and all players. - When the count would exceed the cap, excess tasks keep their
cached AE2 plan but stay inWAITING_CPUwith a
Throttled: SmartCraft global submission cap reached (N)banner. - As soon as another task's link finishes, a slot frees up and a
throttled task picks it up next tick — no plan recomputation cost.
What the cap does not affect
- Player-initiated crafts. Manual crafts via the AE2 Crafting
Confirm screen go throughContainerCraftConfirm→submitJoband
never touchSmartCraftRuntimeCoordinator. The cap is structurally
invisible to those. - Failed submits. When AE2's
submitJobreturnsnull(no link
granted), the budget is not consumed — the existing
SUBMIT_RETRY_MAX_ATTEMPTSbackoff loop continues to work normally.
Stats logging
The periodic SmartCraft stats: line now includes
submissionsThrottledByCap=N activeSubmissions=X/cap=Y so admins can
spot whether the cap is the dominant throttle on a given server.
Tests
33 passing (added 2 cap-specific tests):
global_submission_cap_throttles_excess_tasks_v0192— 4 tasks + 4
idle CPUs + cap=2 → exactly 2 reachRUNNING, 2 carry the throttle
banner,globalActiveSubmissions() == 2.global_submission_cap_zero_disables_throttling_v0192—cap=0
sentinel lets every task reachRUNNING(verifies the disabled
semantics).
Artefacts
| Jar | Purpose |
|---|---|
ae2intelligentscheduling-0.1.9.2.jar |
Player drop-in (notch obfuscation) |
ae2intelligentscheduling-0.1.9.2-dev.jar |
SRG mappings, for development |
ae2intelligentscheduling-0.1.9.2-sources.jar |
Source jar |
Drop the first one into your mods/ folder. Requires Minecraft 1.7.10
with GTNH 2.8.4 manifest dependencies (AE2 / Forge).