Monorepo for Tangled tangled.org

appview: improve error handling in knotstream/spindlestream

Signed-off-by: oppiliappan <me@oppi.li>

authored by oppi.li and committed by Tangled 98a78aeb 01180f74

Changed files
+17 -15
appview
knotserver
+7 -8
appview/state/knotstream.go
··· 143 // trigger info 144 var trigger db.Trigger 145 var sha string 146 - switch record.TriggerMetadata.Kind { 147 case workflow.TriggerKindPush: 148 - trigger.Kind = workflow.TriggerKindPush 149 trigger.PushRef = &record.TriggerMetadata.Push.Ref 150 trigger.PushNewSha = &record.TriggerMetadata.Push.NewSha 151 trigger.PushOldSha = &record.TriggerMetadata.Push.OldSha 152 sha = *trigger.PushNewSha 153 case workflow.TriggerKindPullRequest: 154 - trigger.Kind = workflow.TriggerKindPush 155 trigger.PRSourceBranch = &record.TriggerMetadata.PullRequest.SourceBranch 156 trigger.PRTargetBranch = &record.TriggerMetadata.PullRequest.TargetBranch 157 trigger.PRSourceSha = &record.TriggerMetadata.PullRequest.SourceSha ··· 161 162 tx, err := d.Begin() 163 if err != nil { 164 - return err 165 } 166 167 triggerId, err := db.AddTrigger(tx, trigger) 168 if err != nil { 169 - return err 170 } 171 172 pipeline := db.Pipeline{ ··· 180 181 err = db.AddPipeline(tx, pipeline) 182 if err != nil { 183 - return err 184 } 185 186 err = tx.Commit() 187 if err != nil { 188 - return err 189 } 190 191 - return err 192 }
··· 143 // trigger info 144 var trigger db.Trigger 145 var sha string 146 + trigger.Kind = workflow.TriggerKind(record.TriggerMetadata.Kind) 147 + switch trigger.Kind { 148 case workflow.TriggerKindPush: 149 trigger.PushRef = &record.TriggerMetadata.Push.Ref 150 trigger.PushNewSha = &record.TriggerMetadata.Push.NewSha 151 trigger.PushOldSha = &record.TriggerMetadata.Push.OldSha 152 sha = *trigger.PushNewSha 153 case workflow.TriggerKindPullRequest: 154 trigger.PRSourceBranch = &record.TriggerMetadata.PullRequest.SourceBranch 155 trigger.PRTargetBranch = &record.TriggerMetadata.PullRequest.TargetBranch 156 trigger.PRSourceSha = &record.TriggerMetadata.PullRequest.SourceSha ··· 160 161 tx, err := d.Begin() 162 if err != nil { 163 + return fmt.Errorf("failed to start txn: %w", err) 164 } 165 166 triggerId, err := db.AddTrigger(tx, trigger) 167 if err != nil { 168 + return fmt.Errorf("failed to add trigger entry: %w", err) 169 } 170 171 pipeline := db.Pipeline{ ··· 179 180 err = db.AddPipeline(tx, pipeline) 181 if err != nil { 182 + return fmt.Errorf("failed to add pipeline: %w", err) 183 } 184 185 err = tx.Commit() 186 if err != nil { 187 + return fmt.Errorf("failed to commit txn: %w", err) 188 } 189 190 + return nil 191 }
+7 -1
appview/state/spindlestream.go
··· 3 import ( 4 "context" 5 "encoding/json" 6 "log/slog" 7 "strings" 8 "time" ··· 100 ExitCode: exitCode, 101 } 102 103 - return db.AddPipelineStatus(d, status) 104 }
··· 3 import ( 4 "context" 5 "encoding/json" 6 + "fmt" 7 "log/slog" 8 "strings" 9 "time" ··· 101 ExitCode: exitCode, 102 } 103 104 + err = db.AddPipelineStatus(d, status) 105 + if err != nil { 106 + return fmt.Errorf("failed to add pipeline status: %w", err) 107 + } 108 + 109 + return nil 110 }
+2 -6
knotserver/internal.go
··· 147 } 148 149 func (h *InternalHandle) triggerPipeline(line git.PostReceiveLine, gitUserDid, repoDid, repoName string) error { 150 - const ( 151 - WorkflowDir = ".tangled/workflows" 152 - ) 153 - 154 didSlashRepo, err := securejoin.SecureJoin(repoDid, repoName) 155 if err != nil { 156 return err ··· 166 return err 167 } 168 169 - workflowDir, err := gr.FileTree(context.Background(), WorkflowDir) 170 if err != nil { 171 return err 172 } ··· 177 continue 178 } 179 180 - fpath := filepath.Join(WorkflowDir, e.Name) 181 contents, err := gr.RawContent(fpath) 182 if err != nil { 183 continue
··· 147 } 148 149 func (h *InternalHandle) triggerPipeline(line git.PostReceiveLine, gitUserDid, repoDid, repoName string) error { 150 didSlashRepo, err := securejoin.SecureJoin(repoDid, repoName) 151 if err != nil { 152 return err ··· 162 return err 163 } 164 165 + workflowDir, err := gr.FileTree(context.Background(), workflow.WorkflowDir) 166 if err != nil { 167 return err 168 } ··· 173 continue 174 } 175 176 + fpath := filepath.Join(workflow.WorkflowDir, e.Name) 177 contents, err := gr.RawContent(fpath) 178 if err != nil { 179 continue
+1
knotserver/server.go
··· 75 jc, err := jetstream.NewJetstreamClient(c.Server.JetstreamEndpoint, "knotserver", []string{ 76 tangled.PublicKeyNSID, 77 tangled.KnotMemberNSID, 78 }, nil, logger, db, true, c.Server.LogDids) 79 if err != nil { 80 logger.Error("failed to setup jetstream", "error", err)
··· 75 jc, err := jetstream.NewJetstreamClient(c.Server.JetstreamEndpoint, "knotserver", []string{ 76 tangled.PublicKeyNSID, 77 tangled.KnotMemberNSID, 78 + tangled.RepoPullNSID, 79 }, nil, logger, db, true, c.Server.LogDids) 80 if err != nil { 81 logger.Error("failed to setup jetstream", "error", err)