Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
it('should return true for retryable errors', () => {
[
status.OK,
status.CANCELLED,
status.UNKNOWN,
status.DEADLINE_EXCEEDED,
status.RESOURCE_EXHAUSTED,
status.ABORTED,
status.INTERNAL,
status.UNAVAILABLE,
status.DATA_LOSS,
].forEach((code: status) => {
const shouldRetry = retrier.retry({code} as StatusObject);
assert.strictEqual(shouldRetry, true);
});
});
it('should use a backoff factoring in the failure count', () => {
const random = Math.random();
const expected = Math.pow(2, 1) * 1000 + Math.floor(random * 1000);
sandbox.stub(global.Math, 'random').returns(random);
retrier.retry({code: status.CANCELLED} as StatusObject);
assert.strictEqual(retrier.createTimeout(), expected);
});
});
it('should reset the failure count on OK', () => {
retrier.retry({code: status.CANCELLED} as StatusObject);
retrier.retry({code: status.OK} as StatusObject);
assert.strictEqual(retrier.createTimeout(), 0);
});
call.on('error', error => {
if (error.code !== status.CANCELLED) {
grpcLog.error('INVOICES ERROR: %o', error)
this.emit('subscribeInvoices.error', error)
}
})
call.on('status', status => {
this.activeSubscriptions[key].on('status', callStatus => {
if (callStatus.code === status.CANCELLED) {
delete this.activeSubscriptions[key]
grpcLog.info(`Unsubscribed from ${key} gRPC stream`)
resolve()
}
})
call.on('error', error => error.code !== status.CANCELLED && mainLog.error(error))
call.on('status', channelGraphStatus => {
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {StatusObject, status} from '@grpc/grpc-js';
/*!
* retryable status codes
*/
export const RETRY_CODES: status[] = [
status.OK,
status.CANCELLED,
status.UNKNOWN,
status.DEADLINE_EXCEEDED,
status.RESOURCE_EXHAUSTED,
status.ABORTED,
status.INTERNAL,
status.UNAVAILABLE,
status.DATA_LOSS,
];
/**
* Used to track pull requests and determine if additional requests should be
* made, etc.
*
* @class
* @private
*/
call.on('error', error => error.code !== status.CANCELLED && mainLog.error(error))
call.on('status', status => mainLog.info('INVOICE STATUS:', status))
call.on('status', callStatus => {
if (callStatus.code === status.CANCELLED) {
delete this.subscriptions[key]
grpcLog.info(`Unsubscribed from ${this.serviceName}.${key} gRPC stream`)
resolve()
}
})
})
call.on('error', error => error.code !== status.CANCELLED && mainLog.error(error))
call.on('status', status => mainLog.info('TRANSACTION STATUS: ', status))