API fragility

This thread is now closed to new comments.
Some of the links and information provided in this thread may no longer be available or relevant.
If you have a question please start a new post.
Steve_PP
Partner
4 Posts
Partner
New Zealand
Partner

4Posts

0Kudos

0Solutions

API fragility

Hi

 

Around 16 July the API seemed to start running at about 50% of normal speed and is now typically crashing before it gets through our normal workload that used to take about 15min. It hasn't succeeded for several days - the API typically crashes after a few minutes.

 

Separately, during the uploading of ~400 invoices yesterday it crashed 12 times before the job was finally completed.

 

Are API performance issues currently being addressed?

 

Error 500 is most common, followed by 504:

 

The remote server returned an error: (500) Internal Server Error.

The remote server returned an error: (504) Gateway Timeout.

 

I've noticed performance vary over time but it has never been this bad. Out of interest, over the last 2 years we have witnessed over 3000 errors (either 500 or 504)

 

Thanks

Steve

2 REPLIES 2
Mike_James
Ultimate Partner
5,863 Posts
Ultimate Partner
New Zealand
Ultimate Partner

5,863Posts

1,027Kudos

756Solutions

Re: API fragility

Hi @Steve_PP , this has been an ongoing issue for many months, for us since late last year, and various steps have been taken by MYOB to address it, which did help a lot. There are details on the API blog.

 

Developers like us have been obliged to add retry routines in all our calls, and this usually works within 1 or 2 retries.


Regards, Mike (mike@datawise.co.nz)
DataWise Limited (www.datawise.co.nz), developers of:
DataWise ProActive - Custom Reporting from MYOB programs
(MYOB Business, including AccountRight Live, AccountRight v19.x and exo Payroll)

Bulk download of attachments (more details...)

Steve_PP
Partner
4 Posts
Partner
New Zealand
Partner

4Posts

0Kudos

0Solutions

Re: API fragility

Thanks Mike

 

Yes, so far we've been OK, relying on the next invocation of the sync being good enough as a 'retry'. Call-by-call retrying is annoying but I guess fine for reading but what about writing? E.g. you can't tell whether MYOB has created an invoice or not for a given request if the API simply crashes. I noticed of the 12 crashes writing invoices last night that in one case MYOB had actually created the invoice - so it got duplicated on the next invocation.

 

Out of interest, how do you handle that situation? Send some id in a hidden field on the invoice header and always look for that in existing invoices before potentially writing a new one? (give the API even more things to do - lol.) And what if MYOB only writes half the invoice lines? Have you found you need to check for that?

Didn't find your answer here?

Try using advanced search to find a post more easily Advanced Search
or
Get the conversation started and make a new post Start a Post