Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10168633
  • 博文数量: 1669
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12594
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1669)

文章存档

2023年(4)

2022年(1)

2021年(10)

2020年(24)

2019年(4)

2018年(19)

2017年(66)

2016年(60)

2015年(49)

2014年(201)

2013年(221)

2012年(638)

2011年(372)

分类: 云计算

2014-05-30 10:21:35

CloudFoundry 上传app, console一直处于uploading 问题解决

分类: CloudFoundry 16人阅读 评论(0) 收藏 举报

 

       今天使用CF(v145) 上传app,进行测试,发现一直无法上传成功,总是处于uploading 状态,查看后台日志,发现一直在调用接口:

             10.106.1.46, 10.106.1.34 - - [07/May/2014 17:06:00] "GET /v2/jobs/3278adea-acbd-4bb0-8301-89ec6d69961f HTTP/1.1" 200 230 0.0088

  查询这个job是否完成,根据现象这个job好像一直处于未完成状态,查看CF 中的CloudController 源码:

[ruby] view plaincopy在CODE上查看代码片派生到我的代码片
  1. def upload(guid)  
  2.     
  3.   app = find_guid_and_validate_access(:update, guid)  
  4.   
  5.   logger.error "app=#{app}  resourcee=#{params["resources"]}"  
  6.   raise Errors::AppBitsUploadInvalid, "missing :resources" unless params["resources"]  
  7.   
  8.   uploaded_zip_of_files_not_in_blobstore_path = CloudController::DependencyLocator.instance.upload_handler.uploaded_file(params, "application")  
  9.     
  10.   logger.error "uploaded_zip_of_files_not_in_blobstore_path=#{uploaded_zip_of_files_not_in_blobstore_path}"  
  11.   app_bits_packer_job = AppBitsPackerJob.new(guid, uploaded_zip_of_files_not_in_blobstore_path, json_param("resources"))  
  12.   
  13.   if params["async"] == "true"  
  14.     logger.error "async is true"  
  15.     job = Delayed::Job.enqueue(app_bits_packer_job, queue: LocalQueue.new(config))  
  16.     [HTTP::CREATED, JobPresenter.new(job).to_json]  
  17.   else  
  18.     logger.error "async is false"  
  19.     app_bits_packer_job.perform  
  20.     [HTTP::CREATED, "{}"]  
  21.   end  
  22. rescue VCAP::CloudController::Errors::AppBitsUploadInvalid, VCAP::CloudController::Errors::AppPackageInvalid  
  23.   app.mark_as_failed_to_stage  
  24.   raise  
  25. end  


      控制台 push app 时,是采用的异步,传入了参数async=true,将生成package的job 放入了Delayed::Job 队列。在AppBitsPackerJob 中增加了日志,发现,该任务就没有被执行。

    查看启动cloud_controller_jobs 的脚本

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. case $1 in  
  2.   
  3.   start)  
  4.     pid_guard $PIDFILE "Cloud controller jobs"  
  5.   
  6.     mkdir -p $RUN_DIR  
  7.     mkdir -p $LOG_DIR  
  8.   
  9.     chown vcap:vcap $RUN_DIR  
  10.     chown vcap:vcap $LOG_DIR  
  11.   
  12.     echo $$ > $PIDFILE  
  13.     chown vcap:vcap $PIDFILE  
  14.   
  15.     cd $CC_PACKAGE_DIR/cloud_controller_ng  
  16.     export QUEUES=cc-micro_ng-0,$GENERIC_QUEUE  
  17.     exec chpst -u vcap:vcap bundle exec rake jobs:work \  
  18.       >>$LOG_DIR/jobs_work.stdout.log 2>>$LOG_DIR/jobs_work.stderr.log  
  19.   ;;  

 

红色部分是应该是队列名称,想起之前修改过CloudController的index。修改为了1.

 

[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. bulk_api:  
  2.   auth_user: bulk_api  
  3.   auth_password: "c1oudc0w"  
  4.   
  5. nginx:  
  6.   use_nginx: false  
  7.   instance_socket: "/var/vcap/sys/run/cloud_controller_ng/cloud_controller.sock"  
  8.   
  9. index: 1  
[plain] view plaincopy在CODE上查看代码片派生到我的代码片
  1. name: micro_ng  
  2.   
  3. info:  
  4.   name: vcap  
  5.   build: "2222"  
  6.   version: 2  
  7.   support_address: 
  8.   description: Cloud Foundry sponsored by Pivotal  
  9.   api_version: 2.0.0  



查看cc数据库,数据表delay_jobs 每个delayed job 的queue 标记,猜测是由于 队列名称不一致导致的。

 

修改后,恢复正常。

 

CloudFoundry 将这个index 参数放在配置文件,不知道是要做什么用。。。。

阅读(1855) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~