Uploaded image for project: 'AdMaxLocal'
  1. AdMaxLocal
  2. AML-758

Google Content Editor - keyword and ad errors not being caught

    Details

    • Story Points:
      3
    • Sprint:
      Sprint 12, Sprint 13, Sprint 6

      Description

      When adding keywords to Google fails, the error is not caught (exception thrown, see below/attached log) and because no errors are added to the database, the AdMaxListener thinks the deploy succeeded.

      Expected result: on error adding keywords to google campaigns, the error should be saved to the database and the deploy would fail.

      We should also verify that errors for Ads are caught as well. The code that handles editorial errors might be shared between ads and keywords. I believe editorial triggers for ads can be triggered by adding multiple exclamation points, or perhaps other invalid characters or a a display/destination URL that is not a valid URL.

      To reproduce this, you can add a keyword with a comma in the biz_function_location.keywords table, or you can modify a location short description to have a keyword (mms_common.businessLocations).

      A NullPointerException is happening, and preventing the error from being recorded to the database and therefore making it look like a successful deployment (because one of the conditions that determines success is if the gce_keywordError table is empty).

      log file on server: /var/local/tsa/log/tsa-admax-jmslistener/tsa-admax-jmslistener.log.2012-11-06

      one example keyword triggering error: audi dealership Hawaii, United States

      select gce_keyword., e. from gce_adGroup join gce_keyword on (adGroupID=gce_adGroup.id) left join gce_keywordError e on (gce_keyword.id=keywordID) where campaignID in (8,9,10);

      Google error: CriterionError.KEYWORD_HAS_INVALID_CHARS

      tsa-admax-jmslistener.log.2012-11-06

      query (NULL searchEngineIdentifier, no row in gce_keywordError table). keywordID = 319, 320, 321,322,323,324.

      select gce_keyword., e. from gce_adGroup join gce_keyword on (adGroupID=gce_adGroup.id) left join gce_keywordError e on (gce_keyword.id=keywordID) where campaignID in (8,9,10);

      stack trace

      2012-11-02 12:10:34.999 (3) [pool-18-thread-2]: ApiError found during BaseChangeRequest.validate(): CriterionError.KEYWORD_HAS_INVALID_CHARS
      2012-11-02 12:10:34.999 (3) [pool-18-thread-2]: ApiError found during BaseChangeRequest.validate(): CriterionError.KEYWORD_HAS_INVALID_CHARS
      2012-11-02 12:10:34.999 (3) [pool-18-thread-2]: ApiError found during BaseChangeRequest.validate(): CriterionError.KEYWORD_HAS_INVALID_CHARS
      2012-11-02 12:10:34.999 (3) [pool-18-thread-2]: ApiError found during BaseChangeRequest.validate(): CriterionError.KEYWORD_HAS_INVALID_CHARS
      2012-11-02 12:10:34.999 (3) [pool-18-thread-2]: ApiError found during BaseChangeRequest.validate(): CriterionError.KEYWORD_HAS_INVALID_CHARS
      2012-11-02 12:10:34.999 (3) [pool-18-thread-2]: ApiError found during BaseChangeRequest.validate(): CriterionError.KEYWORD_HAS_INVALID_CHARS
      2012-11-02 12:10:35.009 (2) [pool-18-thread-2]: Exception [SEUser 7 KeywordChangeRequest add request: error processing 6 pending add(s)]:java.lang.NullPointerException
      at com.thesearchagency.searchengines.google.GoogleAdWordsAPI.getReason(GoogleAdWordsAPI.java:6417)
      at com.thesearchagency.searchengines.google.contenteditor.changerequest.ChangeRequestItemGroup.getErrorMap(ChangeRequestItemGroup.java:97)
      at com.thesearchagency.searchengines.google.contenteditor.changerequest.ChangeRequestItemGroup.init(ChangeRequestItemGroup.java:60)
      at com.thesearchagency.searchengines.google.contenteditor.changerequest.ChangeRequestItemGroup.<init>(ChangeRequestItemGroup.java:40)
      at com.thesearchagency.searchengines.google.contenteditor.changerequest.BaseChangeRequest.associateAndGroupAPIErrors(BaseChangeRequest.java:471)
      at com.thesearchagency.searchengines.google.contenteditor.changerequest.BaseChangeRequest.validate(BaseChangeRequest.java:506)
      at com.thesearchagency.searchengines.google.contenteditor.changerequest.BaseChangeRequest.makeRequest(BaseChangeRequest.java:101)
      at com.thesearchagency.searchengines.google.contenteditor.GoogleContentEditor$RequestWorker.call(GoogleContentEditor.java:1442)
      at com.thesearchagency.searchengines.google.contenteditor.GoogleContentEditor$RequestWorker.call(GoogleContentEditor.java:1419)
      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
      at java.util.concurrent.FutureTask.run(FutureTask.java:138)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)

      2012-11-02 12:10:35.009 (2) [pool-18-thread-2]: KeywordDAO: database is null

        Attachments

        1. gce_bug_log.txt.gz
          726 kB
          Jeff Theroux
        2. jboss.log
          143 kB
          Sanjay Kumar Biswal
        3. listener.log
          1.12 MB
          Sanjay Kumar Biswal

          Activity

            People

            • Assignee:
              jelliott Jen Clarke (Inactive)
              Reporter:
              therouxj Jeff Theroux
            • Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: