MCPcopy Index your code
hub / github.com/wavetermdev/waveterm / DetachJobFromBlock

Function DetachJobFromBlock

pkg/jobcontroller/jobcontroller.go:1457–1507  ·  view source on GitHub ↗
(ctx context.Context, jobId string, updateBlock bool)

Source from the content-addressed store, hash-verified

1455}
1456
1457func DetachJobFromBlock(ctx context.Context, jobId string, updateBlock bool) error {
1458 var blockId string
1459 var blockUpdated bool
1460 err := wstore.WithTx(ctx, func(tx *wstore.TxWrap) error {
1461 job, err := wstore.DBMustGet[*waveobj.Job](tx.Context(), jobId)
1462 if err != nil {
1463 return fmt.Errorf("failed to get job: %w", err)
1464 }
1465
1466 blockId = job.AttachedBlockId
1467 if blockId == "" {
1468 return nil
1469 }
1470
1471 if updateBlock {
1472 block, err := wstore.DBGet[*waveobj.Block](tx.Context(), blockId)
1473 if err == nil && block != nil {
1474 err = wstore.DBUpdateFn(tx.Context(), blockId, func(block *waveobj.Block) {
1475 block.JobId = ""
1476 })
1477 if err != nil {
1478 log.Printf("[job:%s] warning: failed to clear JobId from block:%s: %v", jobId, blockId, err)
1479 } else {
1480 blockUpdated = true
1481 }
1482 }
1483 }
1484
1485 err = wstore.DBUpdateFn(tx.Context(), jobId, func(job *waveobj.Job) {
1486 job.AttachedBlockId = ""
1487 })
1488 if err != nil {
1489 return fmt.Errorf("failed to update job: %w", err)
1490 }
1491
1492 log.Printf("[job:%s] detached from block:%s", jobId, blockId)
1493 return nil
1494 })
1495 if err != nil {
1496 return err
1497 }
1498
1499 if blockId != "" {
1500 SendBlockJobStatusEvent(ctx, blockId)
1501 if blockUpdated {
1502 wcore.SendWaveObjUpdate(waveobj.MakeORef(waveobj.OType_Block, blockId))
1503 }
1504 }
1505
1506 return nil
1507}
1508
1509func SendInput(ctx context.Context, data wshrpc.CommandJobInputData) error {
1510 jobId := data.JobId

Callers 2

TerminateAndDetachJobFunction · 0.85

Calls 8

WithTxFunction · 0.92
DBMustGetFunction · 0.92
DBGetFunction · 0.92
DBUpdateFnFunction · 0.92
SendWaveObjUpdateFunction · 0.92
MakeORefFunction · 0.92
SendBlockJobStatusEventFunction · 0.85
ContextMethod · 0.45

Tested by

no test coverage detected