AWS AppSync Автономные мутации обновляются на сервере несколько раз, когда устройство подключено к сети - PullRequest
0 голосов
/ 28 октября 2019

Я использую AWS AppSync Android SDK в своем проекте и обнаружил проблему, заключающуюся в том, что при запуске мутации все работало нормально, если устройство подключено к сети, но если я выполняю автономную мутацию, а затем включаю своюсети, одна и та же мутация обновляется на сервере несколько раз. Так что я получил много повторяющихся записей в моей БД.

Пробовал разные сценарии, но автономные обновления вызываются дважды или трижды после установления сетевого подключения.

// AppSyncClient Класс конфигурации

class ClientFactory {

companion object {
    @Volatile
    private var mAWSAppSyncClient: AWSAppSyncClient? = null        
    private var cacheKeyResolver: CacheKeyResolver? = null
    private var appSyncSqlHelper: AppSyncSqlHelper?=null
    private var mNormalizedCacheFactory: SqlNormalizedCacheFactory?=null
    var  client:OkHttpClient?=null

    private lateinit var interceptor: HttpLoggingInterceptor
    @Synchronized
    fun getInstance(context: Context,utoken:String, dbName:String): AWSAppSyncClient? {
        if (cacheKeyResolver == null){
            cacheKeyResolver = object : CacheKeyResolver() {
                override fun fromFieldRecordSet(field: ResponseField, recordSet: Map<String, Any>): CacheKey {
                    val typeName = recordSet["__typename"] as String
                    if ("MessagesResponse" == typeName) {
                        val userKey = typeName + "." + recordSet["login"]
                        return CacheKey.from(userKey)
                    }
                    if (recordSet.containsKey("id")) {
                        val typeNameAndIDKey = recordSet["__typename"].toString() + "." + recordSet["id"]
                        return CacheKey.from(typeNameAndIDKey)
                    }
                    return CacheKey.NO_KEY
                }

                override fun fromFieldArguments(field: ResponseField, variables: Operation.Variables): CacheKey {
                    return CacheKey.NO_KEY
                }
            }
    }

        interceptor = HttpLoggingInterceptor()
        interceptor.level = HttpLoggingInterceptor.Level.BODY
        appSyncSqlHelper = AppSyncSqlHelper.create(context, dbName)
        mNormalizedCacheFactory =  SqlNormalizedCacheFactory(appSyncSqlHelper)

        if(client==null) {
            val cacheSize = 10 * 1024 * 1024 // 10MB
            client =
                OkHttpClient.Builder().cache(Cache(context.cacheDir, cacheSize.toLong())).addInterceptor(interceptor)
                    .addNetworkInterceptor { chain ->
                        val newRequest = chain.request().newBuilder()
                            .addHeader("Authorization", "Bearer ".plus(utoken))
                            .build()
                        chain.proceed(newRequest)
                    }.build()
        }

        val awsConfig = AWSConfiguration(context)
            mAWSAppSyncClient = AWSAppSyncClient.builder()
                .context(context)
                .okHttpClient(client)
                .normalizedCache(mNormalizedCacheFactory)
                .resolver(cacheKeyResolver)
                .persistentMutationsCallback(object : PersistentMutationsCallback {
                    override fun onFailure(error: PersistentMutationsError?)
                    {
                        Log.v("dd","ff")
                    }
                    override fun onResponse(response: PersistentMutationsResponse?)
                    {
                        Log.v("dd","ff")
                    }
                })
                .awsConfiguration(awsConfig)
                .build()
        return mAWSAppSyncClient
    }       
}

}

// Реализация мутации

        val graphqlCallback = object : GraphQLCall.Callback<MessageActivityMutation.Data>() {
            override fun onResponse(response: Response<MessageActivityMutation.Data>) {
                if(response!=null){}                        
            }
            override fun onFailure(e: ApolloException) {
                e.printStackTrace()                   
            }
        }
        ClientFactory.getInstance(thiscontext!!,preferencesHelper!!.userAuthToken,"messageackmutation_db")
            ?.mutate(MessageActivityMutation.builder()
            .id(msg_id)
            .verb(Constants.MESSAGE_ACKNOWLEDGED)
            .actioned_at(timeStamp)
            .build())
            ?.enqueue(graphqlCallback)

LOGCATДЕТАЛИ ***

2019-10-25 17: 57: 35.180 5403-8062 / com.envoyer.app D / AppSyncOfflineMutationManager: Тема: [23616]: Интернет ОТКЛЮЧЕН. 2019-10-25 17: 57: 35.196 5403-5403 / com.envoyer.app I / timberLog: Информация -> Обычный или R & AK с приложениями 2019-10-25 17: 57: 35.218 5403-5403 / com.envoyer. app V / PersistentOfflineMutationManager: Thread: [2]: в конструкторе 2019-10-25 17: 57: 35.218 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: заливка насоса - выборка всех поставленных в очередьмутации из постоянного хранилища 2019-10-25 17: 57: 35.218 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: получение всех запросов на изменение из постоянного хранилища 2019-10-25 17:57:35.220 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: выход из конструктора. В постоянной очереди имеется [0] мутаций 2019-10-25 17: 57: 35.225 5403-5403 / com.envoyer.app V / AppSyncComplexObjectsInterceptor: Thread: [2]: создание объектов-перехватчиков сложных объектов 2019-10-25 17:57: 35.235 5403-5403 / com.envoyer.app V / AppSyncOfflineMutationInterceptor: Thread: [2]: обработка мутации. 2019-10-25 17: 57: 35.235 5403-5403 / com.envoyer.app V / AppSyncOfflineMutationInterceptor: Thread: [2]: Во-первых, проверка, является ли попытка мутации, обнаружившей конфликт. 2019-10-25 17: 57: 35.235 5403-5403 / com.envoyer.app V / AppSyncOfflineMutationInterceptor: Thread: [2]: Нет, конфликт не обнаружен 2019-10-25 17: 57: 35.237 5403-5403 /com.envoyer.app V / AppSyncOfflineMutationManager: Thread: [2]: добавлена ​​мутация [7ce851b7-fb8e-4ec2-ac49-4b603ca13acd] в очередь памяти 2019-10-25 17: 57: 35.237 5403-5403 / com.envoyer.appV / S3ObjectManagerImplementation: Thread: [2]: Просмотр ключа [id] типа [Integer] 2019-10-25 17: 57: 35.239 5403-5403 / com.envoyer.app V / S3ObjectManagerImplementation: Поток: [2]:Просмотр ключа [глагол] типа [String] 2019-10-25 17: 57: 35.242 5403-5403 / com.envoyer.app V / S3ObjectManagerImplementation: Thread: [2]: Просмотр ключа [actioned_at] типа [String] 2019-10-25 17: 57: 35.247 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: addPersistentMutationObject: Добавление мутации [7ce851b7-fb8e-4ec2-ac49-4b603ca13acd]: MessageActivityMutation {"":" мутация MessageActivity ($ id: Int, $ verb: String, $ actioned_at: String) {MessageActivity (id: $ id, глагол: $ verb, actioned_at: $ actioned_at) {сообщение о состоянии имени __typename}} "," variable ": {" id ": 1833," verb ":" message.seen "," actioned_at ": "2019-10-25 12:27:35"}} 2019-10-25 17: 57: 35.263 5403-5403 / com.envoyer.app V / AppSyncOfflineMutationManager: Thread: [2]: добавлена ​​мутация [7ce851b7-fb8e-4ec2-ac49-4b603ca13acd] в постоянную очередь. Объекты S3 не найдены 2019-10-25 17: 57: 35.263 5403-5403 / com.envoyer.app V / AppSyncOfflineMutationManager: Thread: [2]: созданы записи в памяти и постоянные записи. Теперь собираюсь сигнализировать обработчику очереди. 2019-10-25 17: 57: 35.263 5403-8068 / com.envoyer.app V / QueueUpdateHandler: Thread: [23622]: получено сообщение для выполнения действия в очереди мутаций. 2019-10-25 17: 57: 35.263 5403-8068 / com.envoyer.app V / QueueUpdateHandler: Thread: [23622]: получено сообщение для обработки следующей мутации, если таковая существует. 2019-10-25 17: 57: 35.264 5403-8068 / com.envoyer.app V / AppSyncOfflineMutationManager: Тема: [23622]: Интернет недоступен. Выход 2019-10-25 17:57: 35.281 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: В конструкторе 2019-10-25 17: 57: 35.281 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Поток: [2]: заправка насоса - выборка всех мутаций из постоянного хранилища из очереди 2019-10-25 17: 57: 35.281 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: выборка всех запросов на мутацию изпостоянное хранилище 2019-10-25 17: 57: 35.283 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: выход из конструктора. В постоянной очереди [1] есть мутации 2019-10-25 17: 57: 35.288 5403-5403 / com.envoyer.app V / AppSyncComplexObjectsInterceptor: Thread: [2]: создание перехватчиков сложных объектов 2019-10-25 17:57: 35.331 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: В конструкторе 2019-10-25 17: 57: 35.331 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Поток: [2]: заправка насоса - извлечение всех поставленных в очередь мутаций из постоянного хранилища 2019-10-25 17: 57: 35.331 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: извлечение всех запросов на мутации изпостоянное хранилище 2019-10-25 17: 57: 35.333 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: выход из конструктора. В постоянной очереди имеется [1] мутаций 2019-10-25 17: 57: 35.337 5403-5403 / com.envoyer.app V / AppSyncComplexObjectsInterceptor: Thread: [2]: создание объектов-перехватчиков сложных объектов 2019-10-25 17:57: 35.357 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: В конструкторе 2019-10-25 17: 57: 35.358 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Поток: [2]: заправка насоса - извлечение всех поставленных в очередь мутаций из постоянного хранилища 2019-10-25 17: 57: 35.358 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: извлечение всех запросов на мутации изпостоянное хранилище 2019-10-25 17: 57: 35.360 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: выход из конструктора. В постоянной очереди имеется [1] мутаций 2019-10-25 17: 57: 35.368 5403-5403 / com.envoyer.app V / AppSyncComplexObjectsInterceptor: Thread: [2]: создание объектов-перехватчиков сложных объектов 2019-10-25 17:57: 35.415 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: В конструкторе 2019-10-25 17: 57: 35.415 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Поток: [2]: заправка насоса - извлечение всех поставленных в очередь мутаций из постоянного хранилища 2019-10-25 17: 57: 35.415 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: извлечение всех запросов на мутации изпостоянное хранилище 2019-10-25 17: 57: 35.417 5403-5403 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [2]: выход из конструктора. В постоянной очереди [1] имеются мутации 2019-10-25 17: 57: 35.422 5403-5403 / com.envoyer.app V / AppSyncComplexObjectsInterceptor: Thread: [2]: создание перехватчиков сложных объектов 2019-10-25 17:57: 35.470 5403-8067 / com.envoyer.app D / AppSyncOfflineMutationManager: Тема: [23621]: Интернет ОТКЛЮЧЕН. 2019-10-25 17: 57: 35.472 5403-8069 / com.envoyer.app D / AppSyncOfflineMutationManager: Thread: [23623]: Интернет ОТКЛЮЧЕН. 2019-10-25 17: 57: 35.472 5403-8071 / com.envoyer.app D / AppSyncOfflineMutationManager: Thread: [23625]: Интернет ОТКЛЮЧЕН. 2019-10-25 17: 57: 35.473 5403-8077 / com.envoyer.app D / AppSyncOfflineMutationManager: Thread: [23628]: Интернет ОТКЛЮЧЕН. 2019-10-25 17: 57: 35.474 5403-8080 / com.envoyer.app D / AppSyncOfflineMutationManager: Thread: [23630]: Интернет ОТКЛЮЧЕН. 2019-10-25 17: 57: 36.103 5403-8054 / com.envoyer.app E / timberLog: onError -> Исключение было вызвано веб-сокетом 2019-10-25 17: 57: 37.759 5403-7658 / com. envoyer.app V / AppSyncOfflineMutationInterceptor: Thread: [23596]: обработка мутаций

****** ПОСЛЕ ВКЛЮЧЕНИЯ СЕТИ *******

<- 200 <a href="https://4betrpovsffuhjxad5ouxlm6um.appsync-api.eu-west-1.amazonaws.com/graphql" rel="nofollow noreferrer">https://4betrpovsffuhjxad5ouxlm6um.appsync -api.eu-west-1.amazonaws.com / graphql (1824 мс)2019-10-25 17: 58: 31.140 5403-8282 / com.envoyer.app D / OkHttp: тип содержимого: application / json; кодировка = UTF-8 2019-10-25 17: 58: 31.140 5403-8282 /com.envoyer.app D / OkHttp: content-length: 100 2019-10-25 17: 58: 31.140 5403-8282 / com.envoyer.app D / OkHttp: дата: пт, 25 октября 2019 12:29:19 GMT2019-10-25 17: 58: 31.140 5403-8282 / com.envoyer.app D / OkHttp: x-amzn-requesttid: e351113d-b8b4-416c-855c-6c28c95f1a98 2019-10-25 17: 58: 31.140 5403-8282 / com.envoyer.app D / OkHttp: x-кеш: Мисс из облачного фронта 2019-10-25 17: 58: 31.140 5403-8282 / com.envoyer.app D / OkHttp: через: 1.1 bae54c9df29d44a26d5e0fd3d2c61c9c.cloudfront.net (CloudFront) 2019-10-25 17: 58: 31.140 5403-8282 / com.envoyer.app D / OkHttp: x-amz-cf-pop: MAA50-C1 2019-10-25 17: 58: 31.141 5403-8282 /com.envoyer.app D / OkHttp: x-amz-cf-id: Pl8OYaRmtJxPinPXFbGwcnfgQxyGlWJo1LE0n9_oQprRKeULGsvkCw == 2019-10-25 17: 58: 31.141 5403-8282 / com.H "MessageActivity ": {" __ typename ":" Response "," status ": true," data ":" [] "," message ":" Success "}}} 2019-10-2517: 58: 31.141 5403-8282 / com.envoyer.app D / OkHttp: <- КОНЕЦ HTTP (100-байтовое тело) 2019-10-25 17: 58: 31.142 5403-8282 / com.envoyer.app V /dd: ff 2019-10-25 17: 58: 31.142 5403-8282 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [23645]: удаление мутации [7ce851b7-fb8e-4ec2-ac49-4b603ca13acd] из постоянного хранилища 2019-10-25 17: 58: 31.209 5403-8054 / com.envoyer.app I / DpmTcmClient: RegisterTcmMonitor from: com.android.okhttp.TcmIdleTimerMonitor 2019-10-25 17: 58: 31.271 5403-8298 / com.envoyer.appI / RetryInterceptor: возвращение ответа сети: успех 2019-10-25 17: 58: 31.271 5403-8298 / com.envoyer.app D / OkHttp: <- 200 <a href="https://4betrpovsffuhjxad5ouxlm6um.appsync-api.eu-west-1.amazonaws.com/graphql" rel="nofollow noreferrer">https://4betrpovsffuhjxad5ouxlm6um.appsync -api.eu-west-1.amazonaws.com / graphql (1900ms) 2019-10-25 17: 58: 31.271 5403-8298 / com.envoyer.app D / OkHttp: тип контента: application / json; кодировка = UTF-8 2019-10-25 17: 58: 31.272 5403-8298 / com.envoyer.app D / OkHttp: content-length: 100 2019-10-25 17: 58: 31.272 5403-8298 / com.envoyer.app D / OkHttp: дата: Пт, 25 октября 2019 12:29:19 GMT 2019-10-25 17: 58: 31.272 5403-8298/com.envoyer.app D / OkHttp: x-amzn-requesttid: d0289bd6-3e31-49a6-815f-a708a1fa2233 2019-10-25 17: 58: 31.272 5403-8298 / com.envoyer.app D / OkHttp: x-кэш: Мисс из облачного фронта 2019-10-25 17: 58: 31.272 5403-8298 / com.envoyer.app D / OkHttp: via: 1.1 bae54c9df29d44a26d5e0fd3d2c61c9c.cloudfront.net (CloudFront) 2019-10-25 17: 58: 31.272 5403-8298 / com.envoyer.app D / OkHttp: x-amz-cf-pop: MAA50-C1 2019-10-25 17: 58: 31.272 5403-8298 / com.envoyer.app D / OkHttp: x-amz-cf-id: 7wqu5JSmQJFT9layGkgpXB1WNpx5qD0-ohHF6TNHbU2l8gcBBUs0AQ == 2019-10-25 17: 58: 31.274 5403-8298 / com.envoyer.app D / OkHttp: {"__" ":" "Response: {" data ":" "" ":": ":", "status": true, "data": "[]", "message": "Success"}}} 2019-10-25 17: 58: 31.274 5403-8298 / com.envoyer.app D / OkHttp: <- КОНЕЦ HTTP (100-байтовое тело) 2019-10-25 17: 58: 31.276 5403-8298 / com.envoyer.app V / dd: ff 2019-10-25 17: 58: 31.276 5403-8298 / com. envoyer.app V / PersistentOfflineMutationManager: Thread: [23648]: удаление мутации [7ce851b7-fb8e-4ec2-ac49-4b603ca13acd] из персистентного stруда 2019-10-25 17: 58: 31.407 5403-8307 / com.envoyer.app I / RetryInterceptor: возвращение ответа сети: успех 2019-10-25 17: 58: 31.408 5403-8307 / com.envoyer.app D /OkHttp: <- 200 <a href="https://4betrpovsffuhjxad5ouxlm6um.appsync-api.eu-west-1.amazonaws.com/graphql" rel="nofollow noreferrer">https://4betrpovsffuhjxad5ouxlm6um.appsync -api.eu-west-1.amazonaws.com / graphql (2007ms) 2019-10-25 17: 58: 31.408 5403-8307 / com.envoyer. app D / OkHttp: тип содержимого: application / json; charset = UTF-8 2019-10-25 17: 58: 31.408 5403-8307 / com.envoyer.app D / OkHttp: content-length: 100 2019-10-25 17: 58: 31.408 5403-8307 / com.envoyer.app D / OkHttp: дата: пт, 25 октября 2019 12:29:19 GMT 2019-10-25 17: 58: 31.408 5403-8307 / com.envoyer. app D / OkHttp: x-amzn-requesttid: 6a575625-f4fa-4209-ac5c-e47f88297910 2019-10-25 17: 58: 31.408 5403-8307 / com.envoyer.app D / OkHttp: x-cache: пропустить из облака2019-10-25 17: 58: 31.409 5403-8307 / com.envoyer.app D / OkHttp: via: 1.1 bae54c9df29d44a26d5e0fd3d2c61c9c.cloudfront.net (CloudFront) 2019-10-25 17: 58: 31.409 5403-8307 / com. envoyer.app D / OkHttp: x-amz-cf-pop: MAA50-C12019-10-25 17: 58: 31.409 5403-8307 / com.envoyer.app D / OkHttp: x-amz-cf-id: 1RaLA8-nyDTGsreE4QmtMETeslLvw3PmnHHdMZqzTXsYSjg3Y3kVbQ 5: 5:10 - 201–9: 3–8: 9–9: 8–8: 0: 201–10: 0: 201–10: 0: 201–10: 0: 201–10: 0: 201–2010: 17–17: 30–8: 0: 201–10: 0: 201–10: 0: 201–10: 0: 201–10: 0: 201–10: 0: 201–10: 0: 201: 0: 201: 0: 201: 10: 30: 0: 201: 10: 30: 10: 10: 10: 10: 10: 10: 10: 10: 28: 10: 28: 28: 28: 28: 30: 30: 30: 30: 30: 30: 30: 30: 28: 25: 30: 30: 30: 30: 30: 30: 30: 30: 28com.envoyer.app D / OkHttp: {"data": {"MessageActivity": {"__ typename": "Response", "status": true, "data": "[]", "message": "Success"}}} 2019-10-25 17: 58: 31.411 5403-8307 / com.envoyer.app D / OkHttp: <- КОНЕЦ HTTP (100-байтовое тело) 2019-10-25 17: 58: 31.469 5403-8281/com.envoyer.app I / RetryInterceptor: возвращение ответа сети: успех 2019-10-25 17: 58: 31.469 5403-8281 / com.envoyer.app D / OkHttp: <- 200 <a href="https://4betrpovsffuhjxad5ouxlm6um.appsync-api.eu-west-1.amazonaws.com/graphql" rel="nofollow noreferrer">https://4betrpovsffuhjxad5ouxlm6um.appsync -api.eu-west-1.amazonaws.com / graphql (2152ms) 2019-10-25 17: 58: 31.469 5403-8281 / com.envoyer.app D / OkHttp: тип контента: приложение / json; кодировка= UTF-8 2019-10-25 17: 58: 31.470 5403-8281 / com.envoyer.app D / OkHttp: content-length: 100 2019-10-25 17: 58: 31.470 5403-8281 / com.envoyer. app D / OkHttp: дата: пт, 25 октября 2019 г. 12:29:19 GMT 2019-10-25 17: 58: 31.470 5403-8281 / com.envoyer.app D / OkHttp: x-amzn-requesttid: 509dfabd-008d-477b-8e0d-247c2db21ced 2019-10-25 17: 58: 31.470 5403-8281 / com.envoyer.app D / OkHttp: x-cache: Мисс из облачного фронта 2019-10-25 17: 58: 31.470 5403-8281 / com.envoyer. app D / OkHttp: через: 1.1 bae54c9df29d44a26d5e0fd3d2c61c9c.cloudfront.net (CloudFront) 2019-10-25 17: 58: 31.470 5403-8281 / com.envoyer.app D / OkHttp: x-amz-cf-pop: MAA50-C12019-10-25 17: 58: 31.470 5403-8281 / com.envoyer.app D / OkHttp: x-amz-cf-id: -rdF8loaCHAAmZN8-mRIp9EIYOPJ5ngimAwyisRkoLwXnU_VdrmNAw == 2019-10-2571: 5: 319-10-2571: 5: 319-10-2571: 5: 319-10-2571: 5: 319-10-2571: 5: 319-10-2571: 5: 319-10-2571: 5: 319-10-2571: 5: 319-10-2571: 5: 319-10-2571: 58: 31/com.envoyer.app D / OkHttp: {"data": {"MessageActivity": {"__ typename": "Response", "status": true, "data": "[]", "message": "Success""}}} 2019-10-25 17: 58: 31.471 5403-8281 / com.envoyer.app D / OkHttp: <- КОНЕЦ HTTP (100-байтовое тело) 2019-10-25 17: 58: 31.473 5403-8281 / com.envoyer.app V / dd: ff 2019-10-25 17: 58: 31.473 5403-8281 / com.envoyer.app V / PersistentOfflineMutationManager: Thread: [23644]: удаление мутации [7ce851b7-fb8e-4ec2-ac49-4b603ca13acd] из постоянного магазина 2019-10-25 17: 58: 31.508 5403-8283 / com.envoyer.app I / RetryInterceptor: ответ возвращающейся сети: успех 2019-10-25 17: 58: 31.509 5403-8283 / com.envoyer.app D / OkHttp: <- 200 <a href="https://4betrpovsffuhjxad5ouxlm6um.appsync-api.eu-west-1.amazonaws.com/graphql" rel="nofollow noreferrer">https://4betrpovsffuhjxad5ouxlm6um.appsync -api.eu-west-1.amazonaws.com / graphql (2182ms) 2019-10-25 17: 58: 31.509 5403-8283 / com.envoyer.app D / OkHttp: тип содержимого: application / json; кодировка = UTF-8 2019-10-25 17: 58: 31.509 5403-8283 / com.envoyer.app D / OkHttp: content-length: 100 2019-10-25 17: 58: 31.509 5403-8283 / com.envoyer.app D / OkHttp: дата: пт, 25 октября 2019 12:29:19 GMT 2019-10-25 17: 58: 31.509 5403-8283 / com.envoyer.app D / OkHttp: x-amzn-Requesttid: be28bb94-2788-449d-bc6f-af722e77e6d0 2019-10-25 17: 58: 31.509 5403-8283 / com.envoyer.app D / OkHttp: x-cache: Miss from cloudfront 2019-10-25 17: 58: 31.509 5403-8283 / com.envoyer.app D / OkHttp: через: 1.1 bae54c9df29d44a26d5e0fd3d2c61c9c.cloudfront.net (CloudFront) 2019-10-25 17: 58: 31.509 5403-8283 / com.envoyer.app D / OkHttp: x-amz-cf-pop: MAA50-C1 2019-10-25 17: 58: 31.509 5403-8283 / com.envoyer.app D / OkHttp: x-amz-cf-id: edvrZI0GEB_1DDoikzUVcFjpwwyIGAXl9elEqbgk-_ShvoKsP86kuw== 2019-10-25 17: 58: 31.510 5403-8283 / com.envoyer.app D / OkHttp: {"data": {"MessageActivity": {"__ typename": "Response", "status": true,"data": "[]", "message": "Success"}}} 2019-10-25 17: 58: 31.511 5403-8283 / com.envoyer.app D / OkHttp: <- END HTTP (100-тело байта) 2019-10-25 17: 58: 31.512 5403-8283 / com.envoyer.app V / dd: ff 2019-10-25 17: 58: 31.512 5403-8283 / com.envoyer.app V / PersistentOfflineMutationManager:Тема: [23647]: удаление мутации [7ce851b7-fb8e-4ec2-ac49-4b603ca13acd] из постоянного хранилища 2019-10-25 17: 58: 31.685 5403-8282 / com.envoyer.app V / QueueUpdateHandler: Тема: [23645]: Установка mutationInProgress как false. </p>

1 Ответ

0 голосов
/ 04 ноября 2019

Я думаю, что нашел ответ, но не совсем уверен, почему это происходит. Дело в том, что помимо переопределения onFailure и onSuccess в вашей мутации, вам необходимо переопределить другой метод, т.е. onStatusEvent и очистить очередь мутаций. Я считаю, что он вызывается дважды или трижды, иногда один раз для планирования и один раз для сети.

override fun onStatusEvent(event: GraphQLCall.StatusEvent) {
                    super.onStatusEvent(event)
                    awsAppSyncClient.clearMutationQueue()
                }

Надеюсь, это поможет.

...