[Title] package server using thread for response
authorhataejun <taejun.ha@samsung.com>
Thu, 23 Aug 2012 11:06:11 +0000 (20:06 +0900)
committerhataejun <taejun.ha@samsung.com>
Thu, 23 Aug 2012 11:06:11 +0000 (20:06 +0900)
[Type]
[Module]
[Priority]
[Jira#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

src/pkg_server/SocketRegisterListener.rb

index fd162736655ba279bb33d117dc537b4256a4c464..5115b0581d809b8893578ded90c6a803a05d83b4 100644 (file)
@@ -8,6 +8,9 @@ require "fileTransfer"
 require "BuildComm"
 require "net/ftp"
 
+# mutax for register operation
+$register_mutax = Mutax.new
+
 class SocketRegisterListener 
 
        # initialize
@@ -90,7 +93,9 @@ class SocketRegisterListener
                        handle_cmd_upload( req_line, req )
             }             
                when "REGISTER"
-                       handle_cmd_register( req_line, req )
+            Thread.new {        
+                               handle_cmd_register( req_line, req )
+            }             
                when "STOP"
                        handle_cmd_stop( req_line, req )
                else
@@ -136,17 +141,20 @@ class SocketRegisterListener
                        idx = idx + 1 
                end 
 
-               begin
-                       @parent_server.reload_dist_package()
-                       snapshot_name = @parent_server.register( file_path_list, dist_name, true, false, true) 
-               rescue => e
-                       @log.error "register failed"
-                       @log.error e.message
-                       @log.error e.backtrace.inspect
-                       BuildCommServer.send(req, "ERROR|#{e.message}")
-                       @parent_server.release_lock_file
-                       return
-               end
+               # register mutax
+               $register_mutax.synchronize {
+                       begin
+                               @parent_server.reload_dist_package()
+                               snapshot_name = @parent_server.register( file_path_list, dist_name, true, false, true) 
+                       rescue => e
+                               @log.error "register failed"
+                               @log.error e.message
+                               @log.error e.backtrace.inspect
+                               BuildCommServer.send(req, "ERROR|#{e.message}")
+                               @parent_server.release_lock_file
+                               return
+                       end
+               }
                                
                BuildCommServer.send(req,"SUCC|#{snapshot_name}") 
                BuildCommServer.send_end(req)