code: func (builder *nsCommittersBuilder) execute() error {
  	if err := addRevisionsForMissingKeys(builder.revisions, builder.db, builder.updates); err != nil {
  		return err
  	}
  	maxBacthSize := ledgerconfig.GetMaxBatchUpdateSize()
  	batchUpdateMap := make(map[string]*batchableDocument)
  	for key, vv := range builder.updates {
  		couchDoc, err := keyValToCouchDoc(&keyValue{key: key, VersionedValue: vv}, builder.revisions[key])
  		if err != nil {
  			return err
  		}
  		batchUpdateMap[key] = &batchableDocument{CouchDoc: *couchDoc, Deleted: vv.Value == nil}
  		if len(batchUpdateMap) == maxBacthSize {
  			builder.subNsCommitters = append(builder.subNsCommitters, &subNsCommitter{builder.db, batchUpdateMap})
  			batchUpdateMap = make(map[string]*batchableDocument)
  		}
  	}
  	if len(batchUpdateMap) > 0 {
  		builder.subNsCommitters = append(builder.subNsCommitters, &subNsCommitter{builder.db, batchUpdateMap})
  	}
  	return nil
  }
docs: // execute implements the function in `batch` interface. This function builds one or more `subNsCommitter`s that
  // cover the updates for a namespace