@ -185,7 +185,8 @@ func (c *CheckAttributeReader) Init(ctx context.Context) error {
// Run run cmd
// Run run cmd
func ( c * CheckAttributeReader ) Run ( ) error {
func ( c * CheckAttributeReader ) Run ( ) error {
defer func ( ) {
defer func ( ) {
_ = c . Close ( )
_ = c . stdinReader . Close ( )
_ = c . stdOut . Close ( )
} ( )
} ( )
stdErr := new ( bytes . Buffer )
stdErr := new ( bytes . Buffer )
err := c . cmd . RunWithContext ( & RunContext {
err := c . cmd . RunWithContext ( & RunContext {
@ -196,14 +197,17 @@ func (c *CheckAttributeReader) Run() error {
Stdout : c . stdOut ,
Stdout : c . stdOut ,
Stderr : stdErr ,
Stderr : stdErr ,
PipelineFunc : func ( _ context . Context , _ context . CancelFunc ) error {
PipelineFunc : func ( _ context . Context , _ context . CancelFunc ) error {
select {
case <- c . running :
default :
close ( c . running )
close ( c . running )
}
return nil
return nil
} ,
} ,
} )
} )
if err != nil && c . ctx . Err ( ) != nil && err . Error ( ) != "signal: killed" {
if err != nil && c . ctx . Err ( ) != nil && err . Error ( ) != "signal: killed" {
return fmt . Errorf ( "failed to run attr-check. Error: %w\nStderr: %s" , err , stdErr . String ( ) )
return fmt . Errorf ( "failed to run attr-check. Error: %w\nStderr: %s" , err , stdErr . String ( ) )
}
}
return nil
return nil
}
}
@ -243,10 +247,8 @@ func (c *CheckAttributeReader) CheckPath(path string) (rs map[string]string, err
// Close close pip after use
// Close close pip after use
func ( c * CheckAttributeReader ) Close ( ) error {
func ( c * CheckAttributeReader ) Close ( ) error {
err := c . stdinWriter . Close ( )
_ = c . stdinReader . Close ( )
_ = c . stdOut . Close ( )
c . cancel ( )
c . cancel ( )
err := c . stdinWriter . Close ( )
select {
select {
case <- c . running :
case <- c . running :
default :
default :