问题标签 [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.

0 投票
1 回答
603 浏览

linux - 为只读 ext4 fs 禁用日志

如果为只读的 ext4 fs 禁用日记功能,会不会有任何可能的副作用?

我看到这样做可以节省宝贵的存储配额。

0 投票
1 回答
5526 浏览

c# - 如何在邮件中添加多个电子邮件收件人,但仅将邮件发送到选定的几个地址?

我正在构建一个用于日记目的的应用程序,我会将所有消息放入电子邮件中并将其发送到日记邮箱。我想要的是在字段中显示所有原始邮件收件人的电子邮件地址,但实际上并不向他们发送任何邮件。例如,如果一条消息被发送到“abc@domain.com”,那么在日记中我想在日记邮件字段中显示“abc@domain.com”,但实际上并不将此邮件发送到“abc@domain.com”我正在用 c# 编写这个应用程序,有什么方法可以实现吗?

0 投票
2 回答
116 浏览

ibm-midrange - 从 SQL + AS400 更新时创建日志条目

AS400:如果我使用 1. STRSQL(从命令行) 2. 在 SQLRPGLE 程序中更新/插入/删除语句更新文件,它会创建一个日志条目吗?(文件已正确记录)

0 投票
1 回答
881 浏览

c# - 在 InsertOneAsync() 之后立即 ReplaceOneAsync() 并不总是有效,即使在记录时也是如此

在单实例 MongoDB 服务器上,即使将客户端上的写入问题设置为日志记录,每几千个文档中的一个在插入后也不会立即被替换。

我的印象是,一旦记录下来,文档就可以立即用于查询。

下面的代码插入一个文档,然后更新文档的DateModified属性,并尝试根据文档的 Id 和该属性的旧值更新文档。

该代码以每秒大约 250 个文档的速度插入。大约 1,000-15,000 次调用ReplaceOneAsync(d => d.Id == document.Id && d.DateModified == oldDateModified, ...)失败,因为它返回ModifiedCount0。失败率取决于我们是否运行 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 中的问题,还是我们做(或假设)有问题?

或者,实际的最终目标是如何确保插入可以通过更新立即检索?

0 投票
1 回答
112 浏览

c - 如何知道缓冲区头映射到哪个地址空间?

jbd2源代码中,文件系统中的任何修改都被映射到一个handle_t结构(每个进程)中,该结构稍后用于映射buffer_headtransaction_t该句柄将成为的一部分。

据我所知,当buffer_head需要对给定进行修改时,调用do_get_write_access()将把它映射buffer_head到它所属的事务handle_t。但是,当 thishandle_t用于将 映射buffer_head到 时transaction_t,互易映射丢失了,也就是说,我无法追溯handle_tthisbuffer_head属于哪个。

问题是,在jbd2_journal_commit_transaction()提交功能中的提交阶段 2b)期间,我想找到一种方法来遍历这些buffer_heads并能够对它们进行分类,如果它们与inodemetadatainode 位图块相关,或数据位图块,例如。此外,在源代码的这一点上,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_dirtyhandle_t->h_type有我需要的信息。但是,当我尝试比较这个值时,NULL 指针会导致内核警告。我认为这个结构在每个进程中都是独一无二的,但似乎它有一些竞争条件,我还不清楚。

0 投票
1 回答
44 浏览

c - JBD2 上下文中的 BJ_Shadow 是什么?

我正在研究 jbd2 源代码,但我无法理解该BJ_Shadow标志对于给定的buffer_head.

BJ_Shadow给定的副本buffer_head还是什么?

0 投票
2 回答
119 浏览

java - 什么java数据结构适合像kafka这样的基于偏移量的单分区日志?

我正在寻找一种数据结构,其工作方式类似于具有一个分区的 Apache Kafka 主题:

  • 发件人将始终附加到日志的末尾
  • 每个附加的消息都会得到一个严格递增的偏移量
  • 消息至少保留给定的保留时间
  • 消费者可以在任何偏移量或最旧或最新的偏移量处开始消费
  • 消费消息不会删除它们

如果没有合适的现有结构,我将自己实现它,但我更愿意使用现有的东西。

0 投票
1 回答
131 浏览

windows - Windows MongoDB 日志非常大

我在我的 Windows 机器上使用 MongoDB Server v3.6,配置文件如下:

当我通过推送更新将大量数据写入集合中的数组时,会在 C:/data/db/journal/ 中弹出大量文件,它们分别称为 WiredTigerLog.<somenumber> 和 WiredTigerPreplog.<somenumber>,每个都是 102 ,4 MB 大。从我读过的内容来看,日志应该在更改写入磁盘时清除。即使我停止将数据写入数据库的程序,这些文件也会一直保留到我关闭数据库。我有两次硬崩溃,因为我用完了磁盘空间。大约一个小时的数据导入后,日志膨胀到 100 GB 以上。

发生了什么事,我该如何解决?

0 投票
1 回答
34 浏览

mysql - 每次更新后将所有字段更新到日记帐表

我有这个触发器在每次更新后更新日志表中的单个字段,但是我需要一次更新日志中相关行中的所有列,而不是通过命名每个列并用逗号分隔,我该怎么做?

0 投票
1 回答
257 浏览

unix - 了解影子分页以及它与日志文件系统的区别

我正在尝试很好地掌握类 unix 文件系统中的影子分页;您可能会在ZFSWAFL中看到的东西。似乎在影子分页中,当人们想要对页面进行更改时,会写入不同的页面或“影子页面”。操作完成后,即所有内容都已提交时,影子页面被写出,替换旧页面。这是对影子分页的正确(尽管是高级)理解吗?

影子分页与日志文件系统有何不同?它们看起来很相似。

感谢您的时间!