summaryrefslogtreecommitdiff
path: root/lib/bundler/compact_index_client
AgeCommit message (Collapse)Author
2025-04-01Remove compact index response parser from BundlerDavid Rodríguez
It's available in RubyGems since 3.2.3 and we no longer support that old version.
2025-02-28[rubygems/rubygems] Retry gracefully on blank partial response in compact indexMartin Emde
https://github.com/rubygems/rubygems/commit/fafb9ae090
2024-06-20[rubygems/rubygems] Revert to splitting parser due to performance regressionMartin Emde
* The string search parser was more memory efficient but in some cases, much slower. Reverting until a better solution is found. * Handle the situation where the line might be blank (Artifactory bug) https://github.com/rubygems/rubygems/commit/222d38737d
2024-05-31[rubygems/rubygems] String search based parsing of compact index versionsMartin Emde
This significantly reduces memory usage. https://github.com/rubygems/rubygems/commit/8a76506c90
2024-05-25[rubygems/rubygems] Reorganize and refactor CompactIndexClientMartin Emde
https://github.com/rubygems/rubygems/commit/71bcf354f5
2024-05-24[rubygems/rubygems] update cache checksums to decrease string allocationsJacklyn Ma
https://github.com/rubygems/rubygems/commit/85371a961a
2024-05-23[rubygems/rubygems] Remove MD5 ETag generation from compact indexMartin Emde
This was an offramp for generated etags to allow existing caches to be served until people could upgrade. It has been about 6 months since the transitional version was released, so we can remove this transitional code now. https://github.com/rubygems/rubygems/commit/4ec8cfe611
2024-01-05[rubygems/rubygems] Quote Etag in `If-None-Match` header of compact index ↵Martin Emde
request https://github.com/rubygems/rubygems/commit/d26bcd7551
2023-12-13[rubygems/rubygems] Use vendored net-http in BundlerDavid Rodríguez
https://github.com/rubygems/rubygems/commit/0d758e8926
2023-12-05[rubygems/rubygems] Prefer String#split with block in ↵Mau Magnaguagno
Bundler::CompactIndexClient::Cache#versions String#split supports a block since Ruby 2.6, avoiding intermediate array. https://github.com/rubygems/rubygems/commit/4e864a8f2e
2023-11-27Opaque Etags for compact index requestsJosef Šimánek
This changes the CompactIndexClient to store etags received from the compact index in separate files rather than relying on the MD5 checksum of the file as the etag. Smoothes the upgrade from md5 etags to opaque by generating them when no etag file exists. This should reduce the initial impact of changing the caching behavior by reducing cache misses when the MD5 etag is the same. Eventually, the MD5 behavior should be retired and the etag should be considered completely opaque with no assumption that MD5 would match.
2023-10-08[rubygems/rubygems] Reduce allocations when parsing compact indexSamuel Giddins
This still allocates a ton (a string for each line, plus a bunch of splits into arrays), but it helps a bit when Bundler has to go through dependency resolution. ``` ==> memprof.after.txt <== Total allocated: 194.14 MB (2317172 objects) Total retained: 60.81 MB (593164 objects) ==> memprof.before.txt <== Total allocated: 211.97 MB (2404890 objects) Total retained: 62.85 MB (640342 objects) ``` https://github.com/rubygems/rubygems/commit/c68b41b0e5
2022-12-12Merge RubyGems/Bundler masterHiroshi SHIBATA
from https://github.com/rubygems/rubygems/commit/bfb0ae69776069155d2092702bfbb5a12617d85a Notes: Merged: https://github.com/ruby/ruby/pull/6906
2022-07-14[rubygems/rubygems] Fix misleading error if compact index cannot be copiedDavid Rodríguez
Previously if `~/.bundle/cache/compact_index/rubygems.org.*/version` were owned by root with read-only access, `bundle install` would fail with a misleading error message. For example: ``` There was an error while trying to write to `/tmp/bundler-compact-index-20220711-1823-npllre/versions`. It is likely that you need to grant write permissions for that path. ``` This happened because the EACCESS error was caught by `SharedHelpers.filesystem_access`, which makes it look like the target directory is at fault instead of the source. We can't simply drop this guard because that causes the opposite problem: the permission error appears to come from the source instead of the target, since `CompactIndexClient::Cache#lines` also wraps read access errors. Instead, bring a minimal implementation of `FileUtils.cp` and nest calls to `SharedHelpers.filesystem_access` properly. https://github.com/rubygems/rubygems/commit/320822c070 Co-authored-by: Stan Hu <[email protected]>
2022-01-19Merge rubygems/rubygems HEAD.Hiroshi SHIBATA
Picked at 12aeef6ba9a3be0022be9934c1a3e4c46a03ed3a Notes: Merged: https://github.com/ruby/ruby/pull/5462
2021-12-04[rubygems/rubygems] Let original EACCES error be raisedDavid Rodríguez
This block of code already wraps file operations with `SharedHelpers.filesystem_access`, which rescues and re-raises more friendly errors. Also, I'm not fully sure creating a temporary directory can end up raising an `Errno::EACCES` error from reading `tmpdir` sources. Finally, this rescue block apparently leads to some false positives when firewall is blocking the ruby executable on Windows, or at least that's what we've got reported. In any case, I think it's best to let the original error be raised. https://github.com/rubygems/rubygems/commit/f7dbe54404
2021-05-11Sync bundler & rubygemsDavid Rodríguez
Notes: Merged: https://github.com/ruby/ruby/pull/4367
2021-04-15Merge the master branch of BundlerHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/4383
2021-03-08Sync latest development version of bundler & rubygemsDavid Rodríguez
Notes: Merged: https://github.com/ruby/ruby/pull/4143
2020-12-23Merge RubyGems 3.2.3 and Bundler 2.2.3Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/3982
2020-12-08Merge prepare version of Bundler 2.2.0Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/3864
2020-10-15Merge bundler-2.2.0.rc.2Hiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/3659
2020-06-05[rubygems/rubygems] Revert multi ruby{,gems} version requirement fixDavid Rodríguez
This reverts commit 20f06d9e178211a3016133852b72d21ac7bb93ad, reversing changes made to f2b30cb70df8a518bef0e8a64bbceb86234d922d. https://github.com/rubygems/rubygems/commit/40802bdb18 Notes: Merged: https://github.com/ruby/ruby/pull/3184
2020-05-13Update the bundler version with master branchHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/3086
2019-06-09Merge bundler master from upstream.Hiroshi SHIBATA
Pick from 8dd59e3ba97eb80a599f8149f31bf40773b69dc0
2019-04-14Merge Bundler 2.1.0.pre.1 as developed version from upstream.hsbt
https://github.com/bundler/bundler/commit/a53709556b95a914e874b22ed2116a46b0528852 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67539 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-11-02Added bundler as default gems. Revisit [Feature #12733]hsbt
* bin/*, lib/bundler/*, lib/bundler.rb, spec/bundler, man/*: Merge from latest stable branch of bundler/bundler repository and added workaround patches. I will backport them into upstream. * common.mk, defs/gmake.mk: Added `test-bundler` task for test suite of bundler. * tool/sync_default_gems.rb: Added sync task for bundler. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-22Postponing the Bundler merge.hsbt
I faced a big issue about Bundler with ruby core. I have no time to resolve it issue before 2.5 final release. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-11-01Update bundled bundler to 1.16.0.hsbt
* lib/bundler, spec/bundler: Merge bundler-1.16.0. * common.mk: rspec examples of bundler-1.16.0 needs require option. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60603 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-08Merge bundler to standard libraries.hsbt
rubygems 2.7.x depends bundler-1.15.x. This is preparation for rubygems and bundler migration. * lib/bundler.rb, lib/bundler/*: files of bundler-1.15.4 * spec/bundler/*: rspec examples of bundler-1.15.4. I applied patches. * https://github.com/bundler/bundler/pull/6007 * Exclude not working examples on ruby repository. * Fake ruby interpriter instead of installed ruby. * Makefile.in: Added test task named `test-bundler`. This task is only working macOS/linux yet. I'm going to support Windows environment later. * tool/sync_default_gems.rb: Added sync task for bundler. [Feature #12733][ruby-core:77172] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59779 b2dd03c8-39d4-4d8f-98ff-823fe69b080e