热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Tablecountermissingeventswhenexactlyonceisenabledandtheprocessisabruptlykilled(kill9)

Checklist[x]Ihaveincludedinformationaboutrelevantversions


Checklist


  • [x] I have included information about relevant versions

  • [ ] I have verified that the issue persists when using the
    1
    master

    branch of Faust.


Steps to reproduce

I have a

1
source

topic with 300,000 messages. Using the code below, with exactly_once enabled, I tested the consumption and the count of the

1
table

3 times. Always 300,000 if the process is not interrupted. Then, I tested a fourth time and killed the faust process in the middle of the consumption, then restarted it to finish. The table counter was missing a lot of events. The final count was 299,356.

Expected behavior

I expected not to lose events, if I have

1
exactly once

support and the faust process is abruptly terminated and then, restarted. So, in this case I expected to have 300,000 as the final count.

Actual behavior

The final count was wrong.

Full traceback

1
2
pytb

No errors.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
python

import faust



app = faust.App(

    'count_events',

    processing_guarantee='exactly_once',

    broker='kafka://localhost:19092',

    store='rocksdb://',

    version=VERSION

)



# source topic

source = app.topic('example-source-topic')



# table

table = app.Table('totals', default=int)



.agent(source)

async def process(stream):

    async for event in stream.events():

        table['total'] += 1



.page('/table/{total}/')

.table_route(table=table, match_info='total')

async def get_count(web, request, total):

    return web.json({

        total: table['total'],

    })


Versions
  • Python 3.6.7

  • Faust 1.6.0

  • Operating system Ubuntu 18.10

  • Kafka version 2.2.0

  • RocksDB version (if applicable) 0.7.0

该提问来源于开源项目:robinhood/faust

The source topic in your example is not partitioned? Are you running a different example?


推荐阅读
  • 使用R语言进行Foodmart数据的关联规则分析与可视化
    本文探讨了如何利用R语言中的arules和arulesViz包对Foodmart数据集进行关联规则的挖掘与可视化。文章首先介绍了数据集的基本情况,然后逐步展示了如何进行数据预处理、规则挖掘及结果的图形化呈现。 ... [详细]
  • Python3爬虫入门:pyspider的基本使用[python爬虫入门]
    Python学习网有大量免费的Python入门教程,欢迎大家来学习。本文主要通过爬取去哪儿网的旅游攻略来给大家介绍pyspid ... [详细]
  • Exploring issues and solutions when defining multiple Faust agents programmatically. ... [详细]
  • 在AngularJS中,有时需要在表单内包含某些控件,但又不希望这些控件导致表单变为脏状态。例如,当用户对表单进行修改后,表单的$dirty属性将变为true,触发保存对话框。然而,对于一些导航或辅助功能控件,我们可能并不希望它们触发这种行为。 ... [详细]
  • 本文介绍了一种在 Android 开发中动态修改 strings.xml 文件中字符串值的有效方法。通过使用占位符,开发者可以在运行时根据需要填充具体的值,从而提高应用的灵活性和可维护性。 ... [详细]
  • 解决Expo XDE 2.22.1版本启动错误
    根据问题描述,用户在将Expo升级至2.22.1版本后,在尝试打开项目时遇到了错误。本文提供了详细的错误分析及解决方案。 ... [详细]
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • UVa 11683: 激光雕刻技术解析
    自1958年发明以来,激光技术已在众多领域得到广泛应用,包括电子设备、医疗手术工具、武器等。本文将探讨如何使用激光技术进行材料雕刻,并通过编程解决一个具体的激光雕刻问题。 ... [详细]
  • 本文探讨了如何选择一个合适的序列化版本ID(serialVersionUID),包括使用生成器还是简单的整数,以及在不同情况下应如何处理序列化版本ID。 ... [详细]
  • 在使用mybatis进行mapper.xml测试的时候发生必须为元素类型“mapper”声明属性“namespace”的错误项目目录结构UserMapper和UserMappe ... [详细]
  • 一、使用Microsoft.Office.Interop.Excel.DLL需要安装Office代码如下:2publicstaticboolExportExcel(S ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 本文详细介绍如何在 Apache 中设置虚拟主机,包括基本配置和高级设置,帮助用户更好地理解和使用虚拟主机功能。 ... [详细]
  • 本文详细解析了MySQL中常见的几种错误,并提供了具体的解决方法,帮助开发者快速定位和解决问题。 ... [详细]
author-avatar
hello簞調_290
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有