1. 09 1月, 2017 1 次提交
    • V
      Record and show last used date of SSH Keys · b6df93a5
      Vincent Wong 提交于
      Addresses: Issue #13810
      
      1. Adds a last_used_at attribute to the Key table/model
      2. Update a key's last_used_at whenever it gets used
      3. Display how long ago an ssh key was last used
      b6df93a5
  2. 08 1月, 2017 1 次提交
    • Y
      Remove the project_authorizations.id column · de321fbb
      Yorick Peterse 提交于
      This column used to be a 32 bits integer, allowing for only a maximum of
      2 147 483 647 rows. Given enough users one can hit this limit pretty
      quickly, as was the case for GitLab.com.
      
      Changing this type to bigint (= 64 bits) would give us more space, but
      we'd eventually hit the same limit given enough users and projects. A
      much more sustainable solution is to simply drop the "id" column.
      
      There were only 2 lines of code depending on this column being present,
      and neither truly required it to be present. Instead the code now uses
      the "project_id" column combined with the "user_id" column. This means
      that instead of something like this:
      
          DELETE FROM project_authorizations
          WHERE user_id = X
          AND id = Y;
      
      We now run the following when removing rows:
      
          DELETE FROM project_authorizations
          WHERE user_id = X
          AND project_id = Y;
      
      Since both user_id and project_id are indexed this should not slow down
      the DELETE query.
      
      This commit also removes the "dependent: destroy" clause from the
      "project_authorizations" relation in the User and Project models.
      Keeping this prevents Rails from being able to remove data as it relies
      on an "id" column being present. Since the "project_authorizations"
      table has proper foreign keys set up (with cascading removals) we don't
      need to depend on any Rails logic.
      de321fbb
  3. 06 1月, 2017 1 次提交
  4. 28 12月, 2016 1 次提交
  5. 27 12月, 2016 1 次提交
  6. 26 12月, 2016 1 次提交
  7. 25 12月, 2016 3 次提交
  8. 22 12月, 2016 1 次提交
  9. 21 12月, 2016 4 次提交
  10. 17 12月, 2016 1 次提交
  11. 16 12月, 2016 9 次提交
  12. 15 12月, 2016 2 次提交
  13. 13 12月, 2016 1 次提交
    • Y
      Encode when migrating ProcessCommitWorker jobs · 43af4e55
      Yorick Peterse 提交于
      If the source encoding is not UTF-8 we need to encode the data as
      `JSON.dump` may throw an error if the input can not be converted to
      UTF-8. We only encode when necessary to reduce the overhead.
      
      Fixes gitlab-org/gitlab-ce#25489
      43af4e55
  14. 12 12月, 2016 2 次提交
  15. 08 12月, 2016 1 次提交
  16. 02 12月, 2016 1 次提交
  17. 01 12月, 2016 1 次提交
    • Y
      Pass commit data to ProcessCommitWorker · 6b4d3356
      Yorick Peterse 提交于
      By passing commit data to this worker we remove the need for querying
      the Git repository for every job. This in turn reduces the time spent
      processing each job.
      
      The migration included migrates jobs from the old format to the new
      format. For this to work properly it requires downtime as otherwise
      workers may start producing errors until they're using a newer version
      of the worker code.
      6b4d3356
  18. 30 11月, 2016 1 次提交
  19. 29 11月, 2016 2 次提交
  20. 28 11月, 2016 2 次提交
  21. 25 11月, 2016 1 次提交
    • Y
      Refresh project authorizations using a Redis lease · 92b2c74c
      Yorick Peterse 提交于
      When I proposed using serializable transactions I was hoping we would be
      able to refresh data of individual users concurrently. Unfortunately
      upon closer inspection it was revealed this was not the case. This could
      result in a lot of queries failing due to serialization errors,
      overloading the database in the process (given enough workers trying to
      update the target table).
      
      To work around this we're now using a Redis lease that is cancelled upon
      completion. This ensures we can update the data of different users
      concurrently without overloading the database.
      
      The code will try to obtain the lease until it succeeds, waiting at
      least 1 second between retries. This is necessary as we may otherwise
      end up _not_ updating the data which is not an option.
      92b2c74c
  22. 23 11月, 2016 2 次提交