internal/outcome/process: nil-safe unlock when failing to lock
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				Test / Create distribution (push) Successful in 32s
				
			
		
			
				
	
				Test / Hpkg (push) Successful in 4m13s
				
			
		
			
				
	
				Test / Sandbox (push) Successful in 2m10s
				
			
		
			
				
	
				Test / Hakurei (push) Successful in 3m9s
				
			
		
			
				
	
				Test / Sandbox (race detector) (push) Successful in 4m7s
				
			
		
			
				
	
				Test / Hakurei (race detector) (push) Successful in 4m57s
				
			
		
			
				
	
				Test / Flake checks (push) Successful in 1m26s
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	Test / Create distribution (push) Successful in 32s
				
			Test / Hpkg (push) Successful in 4m13s
				
			Test / Sandbox (push) Successful in 2m10s
				
			Test / Hakurei (push) Successful in 3m9s
				
			Test / Sandbox (race detector) (push) Successful in 4m7s
				
			Test / Hakurei (race detector) (push) Successful in 4m57s
				
			Test / Flake checks (push) Successful in 1m26s
				
			This also prints a debug message which might be useful. Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
		
							parent
							
								
									e7161f8e61
								
							
						
					
					
						commit
						f5274067f6
					
				@ -4,7 +4,6 @@ import (
 | 
				
			|||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"encoding/gob"
 | 
						"encoding/gob"
 | 
				
			||||||
	"errors"
 | 
						"errors"
 | 
				
			||||||
	"iter"
 | 
					 | 
				
			||||||
	"math"
 | 
						"math"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
	"os/exec"
 | 
						"os/exec"
 | 
				
			||||||
@ -237,13 +236,15 @@ func (k *outcome) main(msg message.Msg) {
 | 
				
			|||||||
			// this state transition to processFinal only
 | 
								// this state transition to processFinal only
 | 
				
			||||||
			processState = processFinal
 | 
								processState = processFinal
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			unlock, err := handle.Lock()
 | 
								unlock := func() { msg.Verbose("skipping unlock as lock was not successfully acquired") }
 | 
				
			||||||
			if err != nil {
 | 
								if f, err := handle.Lock(); err != nil {
 | 
				
			||||||
				perror(err, "acquire lock on store segment")
 | 
									perror(err, "acquire lock on store segment")
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									unlock = f
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if entryHandle != nil {
 | 
								if entryHandle != nil {
 | 
				
			||||||
				if err = entryHandle.Destroy(); err != nil {
 | 
									if err := entryHandle.Destroy(); err != nil {
 | 
				
			||||||
					perror(err, "destroy state entry")
 | 
										perror(err, "destroy state entry")
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@ -251,8 +252,7 @@ func (k *outcome) main(msg message.Msg) {
 | 
				
			|||||||
			if isBeforeRevert {
 | 
								if isBeforeRevert {
 | 
				
			||||||
				ec := system.Process
 | 
									ec := system.Process
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				var entries iter.Seq[*store.EntryHandle]
 | 
									if entries, _, err := handle.Entries(); err != nil {
 | 
				
			||||||
				if entries, _, err = handle.Entries(); err != nil {
 | 
					 | 
				
			||||||
					// it is impossible to continue from this point,
 | 
										// it is impossible to continue from this point,
 | 
				
			||||||
					// per-process state will be reverted to limit damage
 | 
										// per-process state will be reverted to limit damage
 | 
				
			||||||
					perror(err, "read store segment entries")
 | 
										perror(err, "read store segment entries")
 | 
				
			||||||
@ -287,7 +287,7 @@ func (k *outcome) main(msg message.Msg) {
 | 
				
			|||||||
					}
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if err = k.sys.Revert((*system.Criteria)(&ec)); err != nil {
 | 
									if err := k.sys.Revert((*system.Criteria)(&ec)); err != nil {
 | 
				
			||||||
					var joinError interface {
 | 
										var joinError interface {
 | 
				
			||||||
						Unwrap() []error
 | 
											Unwrap() []error
 | 
				
			||||||
						error
 | 
											error
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user