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

Varun Vasudev updated YARN-6033:
--------------------------------
    Attachment: YARN-6033.007.patch

bq. is_section_start_line and get_section_name should handle leading and 
trailing spaces, just like the current behavior of the configuration lines.

I would prefer not to do this, we shouldn't allow section starts to be placed 
anywhere on the line, nor should we strip trailing spaces.

{noformat}
264      len = strlen(line);
265      buffer = (char *) calloc(len + 1, sizeof(char));
266      strncpy(buffer, line, len);

You copy the value into the buffer right after allocation. If you do calloc to 
put the trailing \0 there, it might be faster to do that explicitly, because 
this code fills the buffer twice.
{noformat}

Fair point, but I prefer to use calloc. The speed shouldn't be a big deal for 
us.

{noformat}
269      //if no equals is found ignore this line, can be an empty line also

This is a little bit controversial. I would ignore a line trimmed to empty and 
return a configuration error for anything else. It helps with debugging config 
issues
{noformat}
Agreed, fixed.

{noformat}
306      if ((section->size + 1) % MAX_SIZE == 0) {
307        section->kv_pairs = (struct kv_pair **) realloc(
308            section->kv_pairs,
309            sizeof(struct kv_pair *) * (MAX_SIZE + section->size));

Is not it a better practice to do the increase of the kv buffer before we add a 
new item? It might happen that we have MAX_SIZE items, then we allocate 
MAX_SIZE*2. That might also simplify the code since we do not need to allocate 
in the allocate_section.
{noformat}

Good point, fixed.

{noformat}
316      if (section->kv_pairs[section->size]) {

I think this check is redundant
{noformat}
Yep, fixed.

{noformat}
    366    static void populate_section_fields(FILE *conf_file, struct section 
*section) {

Just a note: you would probably save some memory and extra copies, if this was 
implemented as a state machine.
{noformat}

Yeah, I figured for now I'd keep the logic simple.

{noformat}
376              if (section->name != NULL) {
377                if (read_section_entry(line, section) < 0) {
378                  fprintf(ERRORFILE, "Error parsing line %s", line);
379                  exit(INVALID_CONFIG_FILE);
380                }
381              }

This code needs an else exiting with an error (kv pair without section), or am 
I missing something? In that case it might need to be commented.
{noformat}

Yep, I missed that - fixed.

{noformat}
294      if (equaltok == NULL) {
295        free((void *) section->kv_pairs[section->size]->key);
296        free((void *) section->kv_pairs[section->size]);
297        return 2;
298      }

Just to be safe, I would set the freed pointers to NULL here.
{noformat}

Fixed.

{noformat}
478      fseek(conf_file, 0, SEEK_SET);

You might want to add a comment // populate any entries in the newer format 
(sections)
{noformat}

Added the comment but removed the fseek because we don't actually need it.

{noformat}
421     * @param free_section free the second section if set
422     */
423    static void merge_sections(struct section *section1, struct section 
*section2, const int free_section) {

If free_section is set, who will free section->name? BTW free_section is always 
1, do we really need the parameter?
{noformat}
Nice catch on the name being freed, fixed. I think at some point for some 
testing scenarios we might need it. If you feel strongly about it, I can remove 
it.


> Add support for sections in container-executor configuration file
> -----------------------------------------------------------------
>
>                 Key: YARN-6033
>                 URL: https://issues.apache.org/jira/browse/YARN-6033
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>          Components: nodemanager
>            Reporter: Varun Vasudev
>            Assignee: Varun Vasudev
>         Attachments: YARN-6033.003.patch, YARN-6033.004.patch, 
> YARN-6033.005.patch, YARN-6033.006.patch, YARN-6033.007.patch, 
> YARN-6033-YARN-5673.001.patch, YARN-6033-YARN-5673.002.patch
>
>




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: yarn-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: yarn-issues-h...@hadoop.apache.org

Reply via email to