You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@aurora.apache.org by "Renan DelValle (JIRA)" <ji...@apache.org> on 2018/09/17 03:32:00 UTC

[jira] [Resolved] (AURORA-1991) TaskEvents in API Thrift should have optional parameters

     [ https://issues.apache.org/jira/browse/AURORA-1991?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Renan DelValle resolved AURORA-1991.
------------------------------------
       Resolution: Fixed
         Assignee: Ezequiel Torres
    Fix Version/s: 0.21

> TaskEvents in API Thrift should have optional parameters
> --------------------------------------------------------
>
>                 Key: AURORA-1991
>                 URL: https://issues.apache.org/jira/browse/AURORA-1991
>             Project: Aurora
>          Issue Type: Bug
>          Components: Client
>    Affects Versions: 0.19.1
>            Reporter: Ezequiel Torres
>            Assignee: Ezequiel Torres
>            Priority: Minor
>             Fix For: 0.21
>
>
> h1. *+What?+*
> Struct [TaskQuery|https://git-wip-us.apache.org/repos/asf?p=aurora.git;a=blob;f=api/src/main/thrift/org/apache/aurora/gen/api.thrift;h=7265b11103aa12743c42355163ae64e98e965d7f;hb=HEAD#l579] should have optional parameters in order to be able to be used in languages like Go where types does not have a null value by default.
> The following is the autogenerated code created by Thrift with optional parameters and without optional parameters in Golang:
> +*_Without Optional Parameters_*+
> {code}
> type TaskQuery struct {
>   // unused field # 1
>   JobName string `thrift:"jobName,2" json:"jobName"`
>   // unused field # 3
>   TaskIds map[string]bool `thrift:"taskIds,4" json:"taskIds"`
>   Statuses map[ScheduleStatus]bool `thrift:"statuses,5" json:"statuses"`
>   // unused field # 6
>   InstanceIds map[int32]bool `thrift:"instanceIds,7" json:"instanceIds"`
>   // unused field # 8
>   Environment string `thrift:"environment,9" json:"environment"`
>   SlaveHosts map[string]bool `thrift:"slaveHosts,10" json:"slaveHosts"`
>   JobKeys map[*JobKey]bool `thrift:"jobKeys,11" json:"jobKeys"`
>   Offset int32 `thrift:"offset,12" json:"offset"`
>   Limit int32 `thrift:"limit,13" json:"limit"`
>   Role string `thrift:"role,14" json:"role"`
> }
> {code}
> _*+With Optional Parameters+*_
> {code}
> type TaskQuery struct {
> 	// unused field # 1
> 	JobName *string `thrift:"jobName,2" json:"jobName"`
> 	// unused field # 3
> 	TaskIds  map[string]bool         `thrift:"taskIds,4" json:"taskIds"`
> 	Statuses map[ScheduleStatus]bool `thrift:"statuses,5" json:"statuses"`
> 	// unused field # 6
> 	InstanceIds map[int32]bool `thrift:"instanceIds,7" json:"instanceIds"`
> 	// unused field # 8
> 	Environment *string          `thrift:"environment,9" json:"environment"`
> 	SlaveHosts  map[string]bool  `thrift:"slaveHosts,10" json:"slaveHosts"`
> 	JobKeys     map[*JobKey]bool `thrift:"jobKeys,11" json:"jobKeys"`
> 	Offset      *int32           `thrift:"offset,12" json:"offset"`
> 	Limit       *int32           `thrift:"limit,13" json:"limit"`
> 	Role        *string          `thrift:"role,14" json:"role"`
> }
> {code}
> It can be seen that with an optional parameters like JobName, Role and Environment now can be set with a null value
> h1. *+Why?+*
> With the current structure of the TaskQuery object, it is not possible to make queries without explicitly setting all the fields of the TaskQuery object in Golang. Moreover, the lack of a null value in the structure of the TaskQuery object limits the type of queries that can be obtained from the Aurora Thrift API in Golang since a parameter cannot be skipped.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)