Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Will anyone help me debug "proto descriptor was previously loaded" from Google Ads API

I'm getting this error when running this code:

$googleAdsClient->getGoogleAdsServiceClient()->search($customerId, $query, $page_size);

ERROR message: proto descriptor was previously loaded (included in multiple metadata bundles?): google/ads/googleads/v5/enums/policy_topic_evidence_destination_not_working_dns_error_type.proto

$googleAdsClient is an instance of \Google\Ads\GoogleAds\Lib\V5\GoogleAdsClient.

The getGoogleAdsServiceClient method comes from the ServiceClientFactoryTrait trait /Google/Ads/GoogleAds/Lib/V5/ServiceClientFactoryTrait.php

I'm running:

php 7.4.1
grpc module version => 1.34.0
protobuf version => 3.14.0

Additional libs installed via composer:

google/grpc-gcp                       0.1.5      gRPC GCP library for channel management
google/protobuf                       v3.13.0.1  proto library for PHP
googleads/google-ads-php              v5.0.0     Google Ads API client for PHP
grpc/grpc                             1.30.0     gRPC library for PHP

I don't know enough about descriptors or the protobuf library to understand this error. It just started happening a couple days ago and I don't think we made any changes that would effect this. Any help/guidance would be much appreciated.

EDIT: forgot to link to SDK https://github.com/googleads/google-ads-php

EDIT: updated the following libs:

google/apiclient                     v2.9.1     Client library for Google APIs
google/apiclient-services            v0.161.0   Client library for Google APIs
google/auth                          v1.15.0    Google Auth Library for PHP
google/common-protos                 1.3        Google API Common Protos for PHP
google/gax                           1.7.0      Google API Core for PHP
google/grpc-gcp                      0.1.5      gRPC GCP library for channel management
google/protobuf                      v3.15.3    proto library for PHP
googleads/google-ads-php             v7.0.0     Google Ads API client for PHP
grpc/grpc                            1.35.0     gRPC library for PHP
google/protobuf                      v3.15.3    proto library for PHP
like image 813
Chris Avatar asked Feb 24 '21 17:02

Chris


2 Answers

I found the issue for me. I had the C implementation installed via pecl install protobuf. Sense I'm running my app in a docker container, every time I built a new image it would install the latest release of protobuf. Sense I started seeing this error around the 22nd of Feb I looked at the protobuf builds and I see a build on the 20th of Feb for version 3.15.0 which coincides with a new build I ran on the 22nd.

To fix this I downgraded to version 3.14.0 via the pecl install protobuf-3.14.0 command in my Dockerfile. This isn't a permanent fix as at some point I want to upgrade the package but I will have to wait for a version that deals with this issue.

like image 54
Chris Avatar answered Oct 24 '22 18:10

Chris


This problem was addressed in https://github.com/googleads/google-ads-php/issues/540 and fixed in protobuf version 3.18.0 ( https://github.com/protocolbuffers/protobuf/releases/tag/v3.18.0 )

like image 32
iwritecode Avatar answered Oct 24 '22 17:10

iwritecode