zhuqi-lucas commented on code in PR #525:
URL: https://github.com/apache/yunikorn-core/pull/525#discussion_r1161580287


##########
pkg/common/configs/configvalidator.go:
##########
@@ -86,6 +86,14 @@ type placementStaticPath struct {
 
 type placementPathCheckResult int
 
+type LimitCheckHelper struct {

Review Comment:
   Good suggestion, addressed in latest PR.



##########
pkg/common/configs/configvalidator.go:
##########
@@ -320,13 +328,17 @@ func checkLimit(limit Limit, currIdx int, 
userWildCardIdx, groupWildCardIdx *int
                // It means the wildcard for user should be the last item for 
limits object list which including the username,
                // and we should only set one wildcard user for all limits
                if name == "*" {
-                       if *userWildCardIdx != -1 && currIdx > *userWildCardIdx 
{
+                       if limitCheckHelper.userWildCardIdx != -1 && currIdx > 
limitCheckHelper.userWildCardIdx {
                                return fmt.Errorf("should not set more than one 
wildcard user")
                        }
-                       *userWildCardIdx = currIdx
-               } else if *userWildCardIdx != -1 && currIdx > *userWildCardIdx {
+                       limitCheckHelper.userWildCardIdx = currIdx
+               } else if limitCheckHelper.userWildCardIdx != -1 && currIdx > 
limitCheckHelper.userWildCardIdx {
                        return fmt.Errorf("should not set no wildcard user %s 
after wildcard user limit", name)
                }
+               if limitCheckHelper.existedUserName[name] {
+                       return fmt.Errorf("duplicated user name %s , already 
existed", name)
+               }
+               limitCheckHelper.existedUserName[name] = true

Review Comment:
   Good suggestion, addressed in latest PR.



##########
pkg/common/configs/configvalidator.go:
##########
@@ -336,14 +348,30 @@ func checkLimit(limit Limit, currIdx int, 
userWildCardIdx, groupWildCardIdx *int
                // It means the wildcard for group should be the last item for 
limits object list which including the group name,
                // and we should only set one wildcard group for all limits
                if name == "*" {
-                       if *groupWildCardIdx != -1 && currIdx > 
*groupWildCardIdx {
+                       if limitCheckHelper.groupWildCardIdx != -1 && currIdx > 
limitCheckHelper.groupWildCardIdx {
                                return fmt.Errorf("should not set more than one 
wildcard group")
                        }
-                       *groupWildCardIdx = currIdx
-               } else if *groupWildCardIdx != -1 && currIdx > 
*groupWildCardIdx {
+                       limitCheckHelper.groupWildCardIdx = currIdx
+               } else if limitCheckHelper.groupWildCardIdx != -1 && currIdx > 
limitCheckHelper.groupWildCardIdx {
                        return fmt.Errorf("should not set no wildcard group %s 
after wildcard group limit", name)
+               } else {
+                       limitCheckHelper.groupSpecificIdx = currIdx
+               }
+               if limitCheckHelper.existedGroupName[name] {
+                       return fmt.Errorf("duplicated group name %s , already 
existed", name)
                }
+               limitCheckHelper.existedGroupName[name] = true
        }
+
+       // Specifying a wildcard for the group limit sets a cumulative limit 
for all users in that queue.
+       // If there is no specific group mentioned the wildcard group limit 
would thus be the same as the queue limit.
+       // For that reason we do not allow specifying only one group limit that 
is using the wildcard.
+       // There must be at least one limit with a group name defined.
+       if limitCheckHelper.groupWildCardIdx != -1 && 
limitCheckHelper.groupSpecificIdx == -1 {
+               return fmt.Errorf("should not specify only one group limit that 
is using the wildcard. " +
+                       "There must be at least one limit with a group name 
defined ")
+       }
+

Review Comment:
   Good suggestion, addressed in latest PR.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to