code: func (s *specAggregator) tryUpdatingServiceSpecs(specInfo *openAPISpecInfo) error {
  	if specInfo == nil {
  		return fmt.Errorf("invalid input: specInfo must be non-nil")
  	}
  	orgSpecInfo, exists := s.openAPISpecs[specInfo.apiService.Name]
  	// Skip aggregation if OpenAPI spec didn't change
  	if exists && orgSpecInfo != nil && orgSpecInfo.etag == specInfo.etag {
  		return nil
  	}
  	s.openAPISpecs[specInfo.apiService.Name] = specInfo
  	if err := s.updateOpenAPISpec(); err != nil {
  		if exists {
  			s.openAPISpecs[specInfo.apiService.Name] = orgSpecInfo
  		} else {
  			delete(s.openAPISpecs, specInfo.apiService.Name)
  		}
  		return err
  	}
  	return nil
  }
docs: // tryUpdatingServiceSpecs tries updating openAPISpecs map with specified specInfo, and keeps the map intact
  // if the update fails.