问题标签 [journaling]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 为只读 ext4 fs 禁用日志
如果为只读的 ext4 fs 禁用日记功能,会不会有任何可能的副作用?
我看到这样做可以节省宝贵的存储配额。
c# - 如何在邮件中添加多个电子邮件收件人,但仅将邮件发送到选定的几个地址?
我正在构建一个用于日记目的的应用程序,我会将所有消息放入电子邮件中并将其发送到日记邮箱。我想要的是在字段中显示所有原始邮件收件人的电子邮件地址,但实际上并不向他们发送任何邮件。例如,如果一条消息被发送到“abc@domain.com”,那么在日记中我想在日记邮件字段中显示“abc@domain.com”,但实际上并不将此邮件发送到“abc@domain.com”我正在用 c# 编写这个应用程序,有什么方法可以实现吗?
ibm-midrange - 从 SQL + AS400 更新时创建日志条目
AS400:如果我使用 1. STRSQL(从命令行) 2. 在 SQLRPGLE 程序中更新/插入/删除语句更新文件,它会创建一个日志条目吗?(文件已正确记录)
c# - 在 InsertOneAsync() 之后立即 ReplaceOneAsync() 并不总是有效,即使在记录时也是如此
在单实例 MongoDB 服务器上,即使将客户端上的写入问题设置为日志记录,每几千个文档中的一个在插入后也不会立即被替换。
我的印象是,一旦记录下来,文档就可以立即用于查询。
下面的代码插入一个文档,然后更新文档的DateModified
属性,并尝试根据文档的 Id 和该属性的旧值更新文档。
该代码以每秒大约 250 个文档的速度插入。大约 1,000-15,000 次调用ReplaceOneAsync(d => d.Id == document.Id && d.DateModified == oldDateModified, ...)
失败,因为它返回ModifiedCount
0。失败率取决于我们是否运行 Debug 或 Release 构建以及是否连接了调试器:更快的速度意味着更多的错误。
显示的代码代表了我不能轻易改变的东西。当然,我宁愿执行一系列Update.Set()
调用,但现在这不是一个真正的选择。InsertOneAsync()
后跟 aReplaceOneAsync()
被某种通过引用更新实体的存储库模式抽象出来。方法的非异步对应物显示相同的行为。
Thread.Sleep(100)
插入和替换之间的简单化可以缓解问题。
当查询失败时,我们稍等片刻,然后在下面的代码中再次尝试查询该文档,每次都会找到。
发生这种情况的版本:
- MongoDB Community Server 3.4.0、3.4.1、3.4.3、3.4.4 和 3.4.10,都在 WiredTiger 存储引擎上
- 服务器在 Windows 和其他操作系统上运行
- C# Mongo 驱动程序 2.3.0 和 2.4.4
这是 MongoDB 中的问题,还是我们做(或假设)有问题?
或者,实际的最终目标是如何确保插入可以通过更新立即检索?
c - 如何知道缓冲区头映射到哪个地址空间?
在jbd2源代码中,文件系统中的任何修改都被映射到一个handle_t
结构(每个进程)中,该结构稍后用于映射buffer_head
到transaction_t
该句柄将成为的一部分。
据我所知,当buffer_head
需要对给定进行修改时,调用do_get_write_access()
将把它映射buffer_head
到它所属的事务handle_t
。但是,当 thishandle_t
用于将 映射buffer_head
到 时transaction_t
,互易映射丢失了,也就是说,我无法追溯handle_t
thisbuffer_head
属于哪个。
问题是,在jbd2_journal_commit_transaction()
(提交功能中的提交阶段 2b)期间,我想找到一种方法来遍历这些buffer_heads
并能够对它们进行分类,如果它们与inode或metadata或inode 位图块相关,或数据位图块,例如。此外,在源代码的这一点上,buffer_heads
它们似乎是不透明的,它们只是被发送到存储中。
更新 1:
到目前为止,我在jbd2_journal_commit_transaction()
函数中尝试的是在提交阶段 2b中。
它不起作用,它在 中给出 NULL ptr as_p
,也就是说,没有b_assoc_map
为此设置buffer_head
。但是,我不知道b_assoc_map
.
更新 2:
我正在尝试从handle_t
结构中获取信息ext4_mark_iloc_dirty
。handle_t->h_type
有我需要的信息。但是,当我尝试比较这个值时,NULL 指针会导致内核警告。我认为这个结构在每个进程中都是独一无二的,但似乎它有一些竞争条件,我还不清楚。
c - JBD2 上下文中的 BJ_Shadow 是什么?
我正在研究 jbd2 源代码,但我无法理解该BJ_Shadow
标志对于给定的buffer_head
.
是BJ_Shadow
给定的副本buffer_head
还是什么?
java - 什么java数据结构适合像kafka这样的基于偏移量的单分区日志?
我正在寻找一种数据结构,其工作方式类似于具有一个分区的 Apache Kafka 主题:
- 发件人将始终附加到日志的末尾
- 每个附加的消息都会得到一个严格递增的偏移量
- 消息至少保留给定的保留时间
- 消费者可以在任何偏移量或最旧或最新的偏移量处开始消费
- 消费消息不会删除它们
如果没有合适的现有结构,我将自己实现它,但我更愿意使用现有的东西。
windows - Windows MongoDB 日志非常大
我在我的 Windows 机器上使用 MongoDB Server v3.6,配置文件如下:
当我通过推送更新将大量数据写入集合中的数组时,会在 C:/data/db/journal/ 中弹出大量文件,它们分别称为 WiredTigerLog.<somenumber> 和 WiredTigerPreplog.<somenumber>,每个都是 102 ,4 MB 大。从我读过的内容来看,日志应该在更改写入磁盘时清除。即使我停止将数据写入数据库的程序,这些文件也会一直保留到我关闭数据库。我有两次硬崩溃,因为我用完了磁盘空间。大约一个小时的数据导入后,日志膨胀到 100 GB 以上。
发生了什么事,我该如何解决?
mysql - 每次更新后将所有字段更新到日记帐表
我有这个触发器在每次更新后更新日志表中的单个字段,但是我需要一次更新日志中相关行中的所有列,而不是通过命名每个列并用逗号分隔,我该怎么做?