• Rémy Coutable's avatar
    Merge branch 'fix/incremental-trace-update-api' into 'master' · 767d3223
    Rémy Coutable authored
    Fix UTF-8 handling in incremental trace update API
    
    ## What does this MR do?
    
    This MR fixes invalid UTF-8 handling in incremental trace update API (used by GitLab Runner).
    
    ## Why was this MR needed?
    
    Current version is using `.length` method to determine current trace size where Runner is using the trace size in bytes. Also this byte size is used in headers and file operations to agree the trace part to send. This is a problem when build trace contains any multi-byte UTF-8 characters. This MR is fixing this situation so all parts are using the same size in bytes.
    
    ### Runner -> API communication before fix:
    ```
    Checking for builds... received                     runner=_token_
    gitlab-ci-multi-runner 1.3.0~beta.26.gcfd63b9 (cfd63b9)  build=25 runner=_token_
    Using Docker executor with image debian:jessie ...  build=25 runner=_token_
    Pulling docker image debian:jessie ...              build=25 runner=_token_
    25 Submitting build to coordinator... ok            runner=_token_
    25 Appending trace to coordinator... ok             RemoteRange=0-158 RemoteState=running ResponseMessage=202 Accepted ResponseStatusCode=202 SentRange=0-158 runner=_token_
    25 Appending trace to coordinator... ok             RemoteRange=0-491 RemoteState=running ResponseMessage=202 Accepted ResponseStatusCode=202 SentRange=158-505 runner=_token_
    WARNING: 25 Appending trace to coordinator... range missmatch  RemoteRange=0-491 RemoteState= ResponseMessage=416 Requested Range Not Satisfiable ResponseStatusCode=416 SentRange=505-584 runner=_token_
    WARNING: 25 Resending trace patch due to range missmatch  runner=_token_
    25 Appending trace to coordinator... ok             RemoteRange=0-556 RemoteState=running ResponseMessage=202 Accepted ResponseStatusCode=202 SentRange=491-584 runner=_token_
    WARNING: 25 Appending trace to coordinator... range missmatch  RemoteRange=0-556 RemoteState= ResponseMessage=416 Requested Range Not Satisfiable ResponseStatusCode=416 SentRange=584-663 runner=_token_
    WARNING: 25 Resending trace patch due to range missmatch  runner=_token_
    25 Appending trace to coordinator... ok             RemoteRange=0-621 RemoteState=running ResponseMessage=202 Accepted ResponseStatusCode=202 SentRange=556-663 runner=_token_
    Build succeeded                                     build=25 runner=_token_
    WARNING: 25 Appending trace to coordinator... range missmatch  RemoteRange=0-621 RemoteState= ResponseMessage=416 Requested Range Not Satisfiable ResponseStatusCode=416 SentRange=663-797 runner=_token_
    WARNING: 25 Resending trace patch due to range missmatch  runner=_token_
    25 Appending trace to coordinator... ok             RemoteRange=0-741 RemoteState=running ResponseMessage=202 Accepted ResponseStatusCode=202 SentRange=621-797 runner=_token_
    25 Submitting build to coordinator... ok            runner=_token_
    ```
    
    ### Runner -> API communication after fix:
    ```
    Checking for builds... received                     runner=_token_
    gitlab-ci-multi-runner 1.3.0~beta.26.gcfd63b9 (cfd63b9)  build=26 runner=_token_
    Using Docker executor with image debian:jessie ...  build=26 runner=_token_
    Pulling docker image debian:jessie ...              build=26 runner=_token_
    26 Submitting build to coordinator... ok            runner=_token_
    26 Appending trace to coordinator... ok             RemoteRange=0-158 RemoteState=running ResponseMessage=202 Accepted ResponseStatusCode=202 SentRange=0-158 runner=_token_
    26 Appending trace to coordinator... ok             RemoteRange=0-505 RemoteState=running ResponseMessage=202 Accepted ResponseStatusCode=202 SentRange=158-505 runner=_token_
    26 Appending trace to coordinator... ok             RemoteRange=0-584 RemoteState=running ResponseMessage=202 Accepted ResponseStatusCode=202 SentRange=505-584 runner=_token_
    26 Appending trace to coordinator... ok             RemoteRange=0-663 RemoteState=running ResponseMessage=202 Accepted ResponseStatusCode=202 SentRange=584-663 runner=_token_
    Build succeeded                                     build=26 runner=_token_
    26 Submitting build to coordinator... ok            runner=_token_
    ```
    
    See merge request !4541
    767d3223
Name
Last commit
Last update
app Loading commit data...
bin Loading commit data...
builds Loading commit data...
config Loading commit data...
db Loading commit data...
doc Loading commit data...
docker Loading commit data...
features Loading commit data...
fixtures/emojis Loading commit data...
generator_templates/active_record/migration Loading commit data...
lib Loading commit data...
log Loading commit data...
public Loading commit data...
scripts Loading commit data...
shared Loading commit data...
spec Loading commit data...
tmp Loading commit data...
vendor Loading commit data...
.csscomb.json Loading commit data...
.flayignore Loading commit data...
.foreman Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gitlab-ci.yml Loading commit data...
.hound.yml Loading commit data...
.pkgr.yml Loading commit data...
.rspec Loading commit data...
.rubocop.yml Loading commit data...
.ruby-version Loading commit data...
.scss-lint.yml Loading commit data...
.simplecov Loading commit data...
.teatro.yml Loading commit data...
CHANGELOG Loading commit data...
CONTRIBUTING.md Loading commit data...
GITLAB_SHELL_VERSION Loading commit data...
GITLAB_WORKHORSE_VERSION Loading commit data...
Gemfile Loading commit data...
Gemfile.lock Loading commit data...
LICENSE Loading commit data...
MAINTENANCE.md Loading commit data...
PROCESS.md Loading commit data...
Procfile Loading commit data...
README.md Loading commit data...
Rakefile Loading commit data...
VERSION Loading commit data...
config.ru Loading commit data...
doc_styleguide.md Loading commit data...
docker-compose.yml Loading commit data...