CocoaPods / CocoaPods

The Cocoa Dependency Manager.
https://cocoapods.org/
Other
14.57k stars 2.63k forks source link

pod update/outdated failed #8926

Closed Toshik1978 closed 5 years ago

Toshik1978 commented 5 years ago

Report

Command

/Users/anton/.rvm/gems/ruby-2.6.3@project/bin/pod update

Report

I've updated project to use CDN jsDelivr (added source to Podfile and updated .lock). Then call pod update

Update of my pods.

I've got error message. It can be reproduced with pod outdated too...

Stack

   CocoaPods : 1.7.2
        Ruby : ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin18]
    RubyGems : 3.0.3
        Host : Mac OS X 10.14.5 (18F132)
       Xcode : 10.2.1 (10E1001)
         Git : git version 2.22.0
Ruby lib dir : /Users/anton/.rvm/rubies/ruby-2.6.3/lib
Repositories : 

Plugins

cocoapods-deintegrate : 1.0.4
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.0
cocoapods-stats       : 1.1.0
cocoapods-trunk       : 1.3.1
cocoapods-try         : 1.1.0

Podfile

source "https://cdn.jsdelivr.net/cocoa/"

platform :ios, '12.0'
supports_swift_versions '>= 4.2'

use_frameworks!
inhibit_all_warnings!

target 'Project' do
    pod 'SnapKit', '~> 5.0'
    pod 'Bond', '~> 7.5'
    pod 'ReactiveKit', '~> 3.12'
    pod 'Moya', '~> 13.0'
    pod 'Alamofire', '~> 4.8'
    pod 'OAuthSwift', '~> 2.0'
    pod 'ModelMapper', '~> 10.0'
    pod 'Validator', '~> 3.0'
    pod 'R.swift', '~> 5.0'

    pod 'Firebase/Core'
    pod 'Firebase/Auth'
    pod 'Firebase/Messaging'
    pod 'Fabric'
    pod 'Crashlytics'
end

Error

fatal - No live threads left. Deadlock?
201 threads, 201 sleeps current:0x00007fbc0278b930 main thread:0x00007fbbffe05ba0
* #<Thread:0x00007fbc00860010 sleep_forever>
   rb_thread_t:0x00007fbbffe05ba0 native:0x00000001195605c0 int:0
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:46:in `sleep'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:46:in `wait'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:46:in `ns_wait'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/abstract_lockable_object.rb:43:in `ns_wait_until'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/event.rb:87:in `block in wait'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/event.rb:84:in `wait'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/obligation.rb:75:in `wait'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/obligation.rb:87:in `wait!'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-core-1.7.2/lib/cocoapods-core/cdn_source.rb:61:in `preheat_existing_files'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-core-1.7.2/lib/cocoapods-core/cdn_source.rb:219:in `update'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/sources_manager.rb:93:in `block (2 levels) in update'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/user_interface.rb:64:in `section'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/sources_manager.rb:92:in `block in update'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/sources_manager.rb:91:in `each'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/sources_manager.rb:91:in `update'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/installer/analyzer.rb:140:in `block in update_repositories'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/installer/analyzer.rb:138:in `each'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/installer/analyzer.rb:138:in `update_repositories'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/installer.rb:217:in `block in resolve_dependencies'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/user_interface.rb:64:in `section'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/installer.rb:216:in `resolve_dependencies'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/installer.rb:156:in `install!'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/command/update.rb:62:in `run'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/claide-1.0.2/lib/claide/command.rb:334:in `run'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/command.rb:52:in `run'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/bin/pod:55:in `<top (required)>'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/bin/pod:23:in `load'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/bin/pod:23:in `<main>'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/bin/ruby_executable_hooks:24:in `eval'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/bin/ruby_executable_hooks:24:in `<main>'
* #<Thread:0x00007fbc01943008@/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:317 sleep_forever>
   rb_thread_t:0x00007fbc04d11850 native:0x000070000e52a000 int:0
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:322:in `pop'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:322:in `block (3 levels) in create_worker'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
* #<Thread:0x00007fbc01942838@/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:317 sleep_forever>
   rb_thread_t:0x00007fbc04d33e90 native:0x000070000e62d000 int:0
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:322:in `pop'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:322:in `block (3 levels) in create_worker'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `loop'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:320:in `block (2 levels) in create_worker'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `catch'
   /Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:319:in `block in create_worker'
* #<Thread:0x00007fbc01941dc0@/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/executor/ruby_thread_pool_executor.rb:317 sleep_forever>
...
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:46:in `sleep'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:46:in `wait'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:46:in `ns_wait'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/abstract_lockable_object.rb:43:in `ns_wait_until'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/event.rb:87:in `block in wait'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `block in synchronize'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/synchronization/mutex_lockable_object.rb:41:in `synchronize'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/atomic/event.rb:84:in `wait'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/obligation.rb:75:in `wait'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/concurrent-ruby-1.1.5/lib/concurrent/concern/obligation.rb:87:in `wait!'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-core-1.7.2/lib/cocoapods-core/cdn_source.rb:61:in `preheat_existing_files'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-core-1.7.2/lib/cocoapods-core/cdn_source.rb:219:in `update'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/sources_manager.rb:93:in `block (2 levels) in update'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/user_interface.rb:64:in `section'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/sources_manager.rb:92:in `block in update'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/sources_manager.rb:91:in `each'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/sources_manager.rb:91:in `update'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/installer/analyzer.rb:140:in `block in update_repositories'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/installer/analyzer.rb:138:in `each'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/installer/analyzer.rb:138:in `update_repositories'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/installer.rb:217:in `block in resolve_dependencies'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/user_interface.rb:64:in `section'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/installer.rb:216:in `resolve_dependencies'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/installer.rb:156:in `install!'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/command/update.rb:62:in `run'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/claide-1.0.2/lib/claide/command.rb:334:in `run'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/lib/cocoapods/command.rb:52:in `run'
/Users/anton/.rvm/gems/ruby-2.6.3@project/gems/cocoapods-1.7.2/bin/pod:55:in `<top (required)>'
/Users/anton/.rvm/gems/ruby-2.6.3@project/bin/pod:23:in `load'
/Users/anton/.rvm/gems/ruby-2.6.3@project/bin/pod:23:in `<main>'
/Users/anton/.rvm/gems/ruby-2.6.3@project/bin/ruby_executable_hooks:24:in `eval'
/Users/anton/.rvm/gems/ruby-2.6.3@project/bin/ruby_executable_hooks:24:in `<main>'
stevenp commented 5 years ago

This is happening to me as well, running pod outdated with jsDelivr, and was occurring in 1.7.0 and 1.7.1 too. I was just about to open an issue when I saw that this one was just opened.

Toshik1978 commented 5 years ago

I've just found interesting workaround for my case. I've added to Podfile pod 'Firebase' and all works! But w/o CDN I had no this issue. At this moment I'm far away from fast internet, so CDN the only chance for me. Looks like CDN has some problems with not explicit dependencies (like Firebase).

UPDATE. It works not stable... 2 calls to pod outdated gives 2 different results. Success then fail (

dnkoutso commented 5 years ago

cc @igor-makarov

igor-makarov commented 5 years ago

This seems to be what I was talking about in Core#551.

Toshik1978 commented 5 years ago

I've manually integrated patch above. So, now I have much better error description. I have errors like

[!] CDN: jsdelivr-cocoa Relative path couldn't be downloaded: Specs/3/6/0/Crashlytics/3.8.5/Crashlytics.podspec.json, error: execution expired

or

[!] CDN: jsdelivr-cocoa Repo update failed - 2 error(s):
CDN: jsdelivr-cocoa Relative path couldn't be downloaded: Specs/0/3/5/Firebase/2.1.0/Firebase.podspec.json, error: execution expired
CDN: jsdelivr-cocoa Relative path couldn't be downloaded: Specs/1/f/6/SnapKit/0.13.0/SnapKit.podspec.json, error: execution expired

So, looks like it's always network issue. I don't know is it CDN-specific issue or my internet issue (it's actually bad at this moment)...

dnkoutso commented 5 years ago

@igor-makarov should we add retries? are those intermittent network issues?

stevenp commented 5 years ago

This occurs with https://cdn.cocoapods.org/ as well.

igor-makarov commented 5 years ago

@dnkoutso It's not a network issue, the code spawns too many threads.

As for retries, I thought about it but didn't reach any solid opinions.

Toshik1978 commented 5 years ago

I’ve tried to add patch to cocoapods-downloader. In http.rb I’ve modified retry count to 5 and added connect-timeout as 300s. This way I’ve got stable behaviour. But I’m not sure, that it’s valid solution. What is more it can be random success due to current internet state... I’ll try to investigate it today.

dnkoutso commented 5 years ago

@igor-makarov from what @Toshik1978 mentions though https://github.com/CocoaPods/Core/pull/551 does not seem to fully fix the issue. Am I understanding it right?

igor-makarov commented 5 years ago

@dnkoutso as I was saying, there's the thread exhaustion issue which happens regardless of network, and there's the question of retries which needs to be discussed separately.

It seems two things are getting mixed in one issue.

Toshik1978 commented 5 years ago

Yeap, IMHO @igor-makarov is right. With integrated fix I’ve got much more useful error reporting. And this error gives me information about reason of pod failing - execution timeout. And this issue should be fixed separately.

dnkoutso commented 5 years ago

Sounds good I will ship 1.7.3 with the fix in the following few days (hopefully tomorrow)

dnkoutso commented 5 years ago

Merged the PR.

Jenus commented 5 years ago

Issue still exists in 1.7.4 release(xx/xx/.rvm/gems/ruby-2.6.3/gems/cocoapods-1.7.4/lib/cocoapods.rb). The following is stack info, Resolving dependencies of Podfile CDN: jsdelivr-cocoa Relative path couldn't be downloaded: all_pods_versions_3_6_2.txt Response: 404

igor-makarov commented 5 years ago

The jsDelivr URL is no longer supported or maintained. Please use the official URL at https://cdn.cocoapods.org/.

For more info: https://blog.cocoapods.org/CocoaPods-1.7.2/

Jenus commented 5 years ago

@igor-makarov thanks a lot, it works. And you save me more time, thanks again!

utkarsh-sharma-dragon commented 5 years ago

[!] CDN: cocoapods- Relative path couldn't be downloaded: Specs/0/3/5/Firebase/3.15.0/Firebase.podspec.json Response: 503

Got this error

dnkoutso commented 5 years ago

We just added retries for this https://github.com/CocoaPods/Core/pull/573

vijaykholiya commented 4 years ago

This will definitely work for you.

https://github.com/CocoaPods/CocoaPods/issues/9319#issuecomment-561249605