[Title] Fixed the problem of distributing a job within same os servers
authordonghee yang <donghee.yang@samsung.com>
Mon, 3 Sep 2012 15:31:07 +0000 (00:31 +0900)
committerdonghee yang <donghee.yang@samsung.com>
Mon, 3 Sep 2012 15:31:07 +0000 (00:31 +0900)
package/pkginfo.manifest
src/build_server/BuildJob.rb
src/build_server/BuildServer.rb
src/build_server/RemoteBuildServer.rb
src/build_server/RemoteBuilder.rb

index f3105029755d72708a8364c0432b54f82855a30d..9ff6e77a6cc6b1a2db499f408a72282ab38badb2 100644 (file)
@@ -1,5 +1,5 @@
 Source : dibs
-Version :0.99.32
+Version :0.99.33
 Maintainer : taejun ha<taejun.ha@samsung.com>, jiil hyoun <jiil.hyoun@samsung.com>, donghyuk yang <donghyouk.yang@samsung.com>, donghee yang <donghee.yang@samsung.com>, sungmin kim <dev.sungmin.kim@samsung.com
 
 Package : dibs
index 20825604f97be4eaa3d77996191e83dda2284911..702014ea50df890ae1c708fa38e9963b97e430db 100644 (file)
@@ -772,7 +772,7 @@ class BuildJob
 
                # create builder
                if @is_remote_job then
-                       builder = RemoteBuilder.new("JB#{@id}", @remote_server.ip, @remote_server.port, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
+                       builder = RemoteBuilder.new("JB#{@id}", @remote_server, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
                        @log.info( "JobBuilder##{@id} is created", Log::LV_USER)
                        @log.info( " - Remote Server : #{@remote_server.ip}:#{@remote_server.port}" )
                        @log.info( " - FTP Server : #{@server.ftp_addr}" )
@@ -877,7 +877,7 @@ class BuildJob
 
                # create builder
                if @is_remote_job then
-                       builder = RemoteBuilder.new("JB#{@id}", @remote_server.ip, @remote_server.port, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
+                       builder = RemoteBuilder.new("JB#{@id}", @remote_server, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
                        @log.info( "JobBuilder##{@id} is created", Log::LV_USER)
                        @log.info( " - Remote Server : #{@remote_server.ip}:#{@remote_server.port}" )
                        @log.info( " - FTP Server : #{@server.ftp_addr}" )
@@ -960,7 +960,7 @@ class BuildJob
 
                # create builder
                if @is_remote_job then
-                       builder = RemoteBuilder.new("JB#{@id}", @remote_server.ip, @remote_server.port, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
+                       builder = RemoteBuilder.new("JB#{@id}", @remote_server, @server.ftp_addr, @server.ftp_port, @server.ftp_username, @server.ftp_passwd)
                        @log.info( "JobBuilder##{@id} is created", Log::LV_USER)
                        @log.info( " - Remote Server : #{@remote_server.ip}:#{@remote_server.port}" )
                        @log.info( " - FTP Server : #{@server.ftp_addr}" )
index 9de9b93e018c89a8172edfe360b8d86736c06b65..70984092fc841cb831fa1a420b1fd6a23e88708d 100644 (file)
@@ -284,6 +284,7 @@ class BuildServer
                        @friend_servers.each do |server|
                                if ( server.status == "RUNNING" and server.can_build?( job ) and
                                        not server.has_waiting_jobs and 
+                                       not server.job_initializing and 
                                        server.get_number_of_empty_room > 0 )
                                        candidates.push server
                                end
index c942ecc5816f36432f0f95c59700861142a62866..d2fcca9bfb51d9ddea58de0b0ab7d55e2945c777 100644 (file)
@@ -35,6 +35,7 @@ class RemoteBuildServer
        attr_accessor :ip, :port, :status, :host_os
        attr_accessor :max_working_jobs, :working_jobs, :waiting_jobs
        attr_accessor :pkgserver_url, :path
+       attr_accessor :job_initializing
 
        # initialize
        def initialize(ip, port, parent)
@@ -47,6 +48,7 @@ class RemoteBuildServer
                @waiting_jobs = []
                @pkgserver_url = parent.pkgserver_url
                @path = ""
+               @job_initializing = false
        end
 
 
index e3a594bed64ce4b945dcaff9e7aa4bc6c4371901..2cee27eb48191fa1671fa95a9fca59852c31f2f6 100644 (file)
@@ -37,10 +37,11 @@ class RemoteBuilder
        attr_accessor :id, :log
 
        # initialize
-       def initialize( id, addr, port, ftp_addr, ftp_port, ftp_username, ftp_passwd)
+       def initialize( id, server,ftp_addr, ftp_port, ftp_username, ftp_passwd)
                @id = id
-               @addr = addr
-               @port = port
+               @server = server
+               @addr = server.ip
+               @port = server.port
                @ftp_addr = ftp_addr
                @ftp_port = ftp_port
                @ftp_username = ftp_username
@@ -57,14 +58,17 @@ class RemoteBuilder
                dock = Utils.create_uniq_name()
 
                # send local packages
+               @server.job_initializing = true
                local_pkgs.each do |pkg_path|
                @log.info( "Sending file... : #{pkg_path}", Log::LV_USER )
                        result = send_file_to_remote( pkg_path, dock )
                        if not result then
                @log.error( "File transfering failed!", Log::LV_USER )
+                               @server.job_initializing = false
                                return false
                        end
                end
+               @server.job_initializing = false
 
                # send build request
                @log.info( "Sending build request to remote server...", Log::LV_USER )