[ 
https://issues.apache.org/jira/browse/BEAM-13124?focusedWorklogId=698726&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-698726
 ]

ASF GitHub Bot logged work on BEAM-13124:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 20/Dec/21 14:36
            Start Date: 20/Dec/21 14:36
    Worklog Time Spent: 10m 
      Work Description: KhaninArtur commented on a change in pull request 
#16277:
URL: https://github.com/apache/beam/pull/16277#discussion_r772404494



##########
File path: playground/backend/cmd/server/http.go
##########
@@ -33,3 +49,28 @@ func listenHttp(ctx context.Context, errChan chan error, 
envs environment.Networ
                return
        }
 }
+
+// isReady checks the number of already working code processing.
+//  It counts by the number of the 
/path/to/workingDir/executable_files/{pipelineId} folders.
+// If it is equals or more than numOfParallelJobs, then returns false.
+// If it is less than numOfParallelJobs, then returns true.
+func isReady(workingDir string, numOfParallelJobs int) bool {
+       // TODO add getting of dir executable_files from environments.
+       baseFileFolder := filepath.Join(workingDir, "executable_files")
+       _, err := os.Stat(baseFileFolder)
+       if os.IsNotExist(err) {
+               return true
+       }
+
+       dirEntries, err := os.ReadDir(baseFileFolder)
+       if err != nil {
+               logger.Errorf("Readiness: Error during read %s: %s", 
baseFileFolder, err.Error())
+               return false
+       }
+
+       if len(dirEntries) >= numOfParallelJobs {
+               logger.Errorf("Readiness: Count of code processing is equals or 
more than possible: %d / %d", len(dirEntries), numOfParallelJobs)

Review comment:
       ```suggestion
                logger.Errorf("Readiness: Count of code processing is equal or 
more than possible: %d / %d", len(dirEntries), numOfParallelJobs)
   ```

##########
File path: playground/backend/cmd/server/http.go
##########
@@ -33,3 +49,28 @@ func listenHttp(ctx context.Context, errChan chan error, 
envs environment.Networ
                return
        }
 }
+
+// isReady checks the number of already working code processing.
+//  It counts by the number of the 
/path/to/workingDir/executable_files/{pipelineId} folders.
+// If it is equals or more than numOfParallelJobs, then returns false.
+// If it is less than numOfParallelJobs, then returns true.
+func isReady(workingDir string, numOfParallelJobs int) bool {
+       // TODO add getting of dir executable_files from environments.
+       baseFileFolder := filepath.Join(workingDir, "executable_files")
+       _, err := os.Stat(baseFileFolder)
+       if os.IsNotExist(err) {
+               return true
+       }
+
+       dirEntries, err := os.ReadDir(baseFileFolder)
+       if err != nil {
+               logger.Errorf("Readiness: Error during read %s: %s", 
baseFileFolder, err.Error())
+               return false
+       }
+
+       if len(dirEntries) >= numOfParallelJobs {

Review comment:
       What happens if `numOfParallelJobs` = 0? I think we should avoid such 
situations

##########
File path: playground/backend/cmd/server/http.go
##########
@@ -33,3 +49,28 @@ func listenHttp(ctx context.Context, errChan chan error, 
envs environment.Networ
                return
        }
 }
+
+// isReady checks the number of already working code processing.
+//  It counts by the number of the 
/path/to/workingDir/executable_files/{pipelineId} folders.
+// If it is equals or more than numOfParallelJobs, then returns false.
+// If it is less than numOfParallelJobs, then returns true.
+func isReady(workingDir string, numOfParallelJobs int) bool {
+       // TODO add getting of dir executable_files from environments.
+       baseFileFolder := filepath.Join(workingDir, "executable_files")

Review comment:
       "executable_files" seems like a constant

##########
File path: playground/backend/internal/environment/environment_service.go
##########
@@ -137,6 +140,17 @@ func GetNetworkEnvsFromOsEnvs() (*NetworkEnvs, error) {
 func ConfigureBeamEnvs(workDir string) (*BeamEnvs, error) {
        sdk := pb.Sdk_SDK_UNSPECIFIED
        preparedModDir, modDirExist := os.LookupEnv(preparedModDirKey)
+
+       numOfParallelJobs := defaultNumOfParallelJobs
+       if value, present := os.LookupEnv(numOfParallelJobsKey); present {
+               convertedValue, err := strconv.Atoi(value)
+               if err != nil {
+                       logger.Errorf("Incorrect value for %s. Should be 
integer. Will be used default value: %d", numOfParallelJobsKey, 
defaultNumOfParallelJobs)
+               } else {
+                       numOfParallelJobs = convertedValue

Review comment:
       In addition to the comment above, we should check, that the value is 
strictly positive

##########
File path: playground/backend/internal/environment/environment_service.go
##########
@@ -137,6 +140,17 @@ func GetNetworkEnvsFromOsEnvs() (*NetworkEnvs, error) {
 func ConfigureBeamEnvs(workDir string) (*BeamEnvs, error) {
        sdk := pb.Sdk_SDK_UNSPECIFIED
        preparedModDir, modDirExist := os.LookupEnv(preparedModDirKey)
+
+       numOfParallelJobs := defaultNumOfParallelJobs
+       if value, present := os.LookupEnv(numOfParallelJobsKey); present {
+               convertedValue, err := strconv.Atoi(value)
+               if err != nil {
+                       logger.Errorf("Incorrect value for %s. Should be 
integer. Will be used default value: %d", numOfParallelJobsKey, 
defaultNumOfParallelJobs)

Review comment:
       @ilya-kozyrev why? I think default value is a good strategy




-- 
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]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 698726)
    Time Spent: 1h  (was: 50m)

> [Playground] Create readiness endpoint
> --------------------------------------
>
>                 Key: BEAM-13124
>                 URL: https://issues.apache.org/jira/browse/BEAM-13124
>             Project: Beam
>          Issue Type: New Feature
>          Components: beam-playground
>            Reporter: Artur Khanin
>            Assignee: Aydar Zaynutdinov
>            Priority: P3
>              Labels: beam-playground-backend, beam-playground-beta-launch, 
> beam-playground-sprint-5
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> Need to add a new endpoint to check the instance's readiness. If the instance 
> is ready to receive one more code to process it this endpoint should return 
> status 200, in another case, it returns some error status (423 for example).



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to