Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Invalid email causes ValueError #793

Closed
zhquan opened this issue Jun 8, 2023 · 0 comments · Fixed by #797
Closed

Invalid email causes ValueError #793

zhquan opened this issue Jun 8, 2023 · 0 comments · Fixed by #797

Comments

@zhquan
Copy link
Member

zhquan commented Jun 8, 2023

I get this error when the email does not content @

[2023-06-07 09:55:28,775 - ERROR - rq.worker:1149] Traceback (most recent call last):
  File "/opt/venv/lib/python3.9/site-packages/rq/worker.py", line 1075, in perform_job
    rv = job.perform()
  File "/opt/venv/lib/python3.9/site-packages/rq/job.py", line 854, in perform
    self._result = self._execute()
  File "/opt/venv/lib/python3.9/site-packages/rq/job.py", line 877, in _execute
    result = self.func(*self.args, **self.kwargs)
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/decorators.py", line 92, in using_tenant
    return func(*args, **kwargs)
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/jobs.py", line 382, in affiliate
    for rec in engine.recommend('affiliation', chunk):
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/recommendations/engine.py", line 88, in _generate_recommendations
    for rec in recommender(*args, **kwargs):
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/recommendations/affiliation.py", line 76, in recommend_affiliations
    yield (uuid, _suggest_affiliations(individual))
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/recommendations/affiliation.py", line 85, in _suggest_affiliations
    domains = _retrieve_individual_email_domains(individual)
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/recommendations/affiliation.py", line 115, in _retrieve_individual_email_domains
    dom = _find_matching_domain(domain)
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/recommendations/affiliation.py", line 141, in _find_matching_domain
    result = find_domain(domain)
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/db.py", line 248, in find_domain
    validate_field('domain_name', domain_name)
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/aux.py", line 126, in validate_field
    raise ValueError("'{}' cannot be an empty string".format(name))
ValueError: 'domain_name' cannot be an empty string
Traceback (most recent call last):
  File "/opt/venv/lib/python3.9/site-packages/rq/worker.py", line 1075, in perform_job
    rv = job.perform()
  File "/opt/venv/lib/python3.9/site-packages/rq/job.py", line 854, in perform
    self._result = self._execute()
  File "/opt/venv/lib/python3.9/site-packages/rq/job.py", line 877, in _execute
    result = self.func(*self.args, **self.kwargs)
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/decorators.py", line 92, in using_tenant
    return func(*args, **kwargs)
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/jobs.py", line 382, in affiliate
    for rec in engine.recommend('affiliation', chunk):
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/recommendations/engine.py", line 88, in _generate_recommendations
    for rec in recommender(*args, **kwargs):
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/recommendations/affiliation.py", line 76, in recommend_affiliations
    yield (uuid, _suggest_affiliations(individual))
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/recommendations/affiliation.py", line 85, in _suggest_affiliations
    domains = _retrieve_individual_email_domains(individual)
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/recommendations/affiliation.py", line 115, in _retrieve_individual_email_domains
    dom = _find_matching_domain(domain)
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/recommendations/affiliation.py", line 141, in _find_matching_domain
    result = find_domain(domain)
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/db.py", line 248, in find_domain
    validate_field('domain_name', domain_name)
  File "/opt/venv/lib/python3.9/site-packages/sortinghat/core/aux.py", line 126, in validate_field
    raise ValueError("'{}' cannot be an empty string".format(name))
ValueError: 'domain_name' cannot be an empty string

There are a lot of users in git who replace @ with at, (), or directly remove it

MariaDB [test]> SELECT uuid,name,email FROM identities WHERE email NOT LIKE '%\@%' limit 100;
+------------------------------------------+---------------------------------------+------------------------------------+
| uuid                                     | name                                  | email                              |
+------------------------------------------+---------------------------------------+------------------------------------+
| 9418acf20f22785aaf77aeae1a459413bc0b1870 | ?                                     | ?                                  |
| 24643175171e02862057cc16ca12067a971bacfc | None                                  | c                                  |
| 082ddb6d6df71bd3ccd2f999cfb7eb0cb6b76576 | example at                            | example at domain.com              |
| a26c85e7ee0a2b837d64973b946e6db5d761a98a | example ()                            | example () domain ! com            |
| ebe82411789f9f5ab232fc0c357b56efb884022d | example empty                         | example domain com                 |
| 59107e1da47f71d547c7bbc94911e526a51bad10 | example nothing                       | example                            |
| e47b6e31724124635069070f2ed7b80a0a449612 | example without domain                | example at                         |

I think adding this code at https://github.com/chaoss/grimoirelab-sortinghat/blob/master/sortinghat/core/recommendations/affiliation.py#L143 to skip them will work

        except ValueError:
            result = None
            keep_looking = False
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant