diff --git a/lib/gitlab/ci/config/node/entry.rb b/lib/gitlab/ci/config/node/entry.rb
index 8fda37a8922ab764ae9ab4e0a63c7e649539baf8..97e17b89c40b810c1089645b16eb695f8df3af03 100644
--- a/lib/gitlab/ci/config/node/entry.rb
+++ b/lib/gitlab/ci/config/node/entry.rb
@@ -20,12 +20,8 @@ module Gitlab
           end
 
           def process!
-            return if leaf?
-            return unless valid?
-
-            compose!
-            process_nodes!
-            @validator.validate(:processed)
+            compose! unless leaf?
+            @validator.validate(:processed) if valid?
           end
 
           def leaf?
@@ -90,12 +86,12 @@ module Gitlab
           private
 
           def compose!
+            return unless valid?
+
             nodes.each do |key, essence|
               @nodes[key] = create_node(key, essence)
             end
-          end
 
-          def process_nodes!
             @nodes.each_value(&:process!)
           end
 
diff --git a/lib/gitlab/ci/config/node/jobs.rb b/lib/gitlab/ci/config/node/jobs.rb
index 1cd2dc8f5b32275682bdb417e00761cfa6cec834..71893ba1d8879eb713802623c18947978fe76bfc 100644
--- a/lib/gitlab/ci/config/node/jobs.rb
+++ b/lib/gitlab/ci/config/node/jobs.rb
@@ -27,10 +27,6 @@ module Gitlab
             @nodes.values.any?(&:relevant?)
           end
 
-          def leaf?
-            false
-          end
-
           private
 
           def create_node(key, value)