小编Kay*_*Kay的帖子

如何访问可重用工作流程中的参考

语境

公共存储库中的可重用工作流程可以通过附加引用来调用,该引用可以是 SHA、发布标签或分支名称,例如: {owner}/{repo}/.github/workflows/{filename}@{ref}

Github文档指出:

当调用者工作流触发可重用工作流时,github 上下文始终与调用者工作流关联。

问题

由于 github 上下文始终与调用者工作流关联,因此可重用工作流无法访问引用,例如 tag v1.0.0。但是,当可重用工作流需要签出存储库以便使用复合操作时,了解引用非常重要。

例子

假设调用者工作流正在分支内执行,并调用可重用工作流的main引用:v1.0.0.

name: Caller workflow
on:
  workflow_dispatch:

jobs:
  caller:
    uses: owner/public-repo/.github/workflows/reusable-workflow.yml@v1.0.0

Run Code Online (Sandbox Code Playgroud)

以下是使用复合操作的可重用工作流程:

name: reusable workflows
on:
  workflow_call:

jobs:
  first-job:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3.1.0
        with:
          repository: owner/public-repo
          ref: ${{ github.ref_name }}

      - name: composite action
        uses: ./actions/my-composite-action
Run Code Online (Sandbox Code Playgroud)

在上面的代码片段中,${{ github.ref_name }}main而不是v1.0.0因为 github 上下文始终与调用者工作流程相关联。因此,复合动作代码是基于main而不是基于v1.0.0. 然而,打电话的人想要v1.0.0。因此我的问题是:可重用工作流程如何能够访问调用者给出的引用?

github-actions github-actions-reusable-workflows

6
推荐指数
0
解决办法
1256
查看次数

MongoDB MapReduce比纯Java处理慢得多?

我想要计算我的文档的所有关键字(包括嵌入式文档).首先我写了一个Java客户端来解决这个问题.显示结果只需不到4秒.然后我写了一个map/reduce函数.结果很好,但运行该功能花了30多秒!我认为map/reduce函数会更快,因为它是在服务器端执行的.Java客户端需要从服务器获取每个文档,但速度要快得多.为什么会这样?

//这是我的地图功能:

map = function(){
    for(var key in this) {
      emit(key, {count:1});
      if(isNestedObject(this[key])){
        m_sub(key, this[key]);
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

//这是我的reduce函数:

reduce = function (key, emits) {
    total = 0;
    for (var i in emits) {
        total += emits[i].count;
    }
    return {count:total};
}
Run Code Online (Sandbox Code Playgroud)

//这是对mapreduce的调用:

mr = db.runCommand({"mapreduce":"keyword", "map" : map, "reduce" : reduce, 
    "scope":{
        isNestedObject : function (v) {
            return v && typeof v === "object";
        },
        m_sub : function(base, value) {
            for(var key in value) {
              emit(base + "." + key, …
Run Code Online (Sandbox Code Playgroud)

java performance mapreduce mongodb

3
推荐指数
2
解决办法
5723
查看次数

mongod在哪个版本中的默认写关注是什么?

我在mongodb的文档中找不到默认的写入问题以及如何定义“已确认的写入”。似乎在不同的mongodb版本中这已经改变,例如v3.2文档所示:

在3.2.6之前的3.2版本中,w:“多数”表示j:如果启用日记功能,则为true。对于早期版本的MongoDB,“ w:大多数”并不意味着日记。

要么:

在版本3.0中进行了更改:在MongoDB 3.0之前,w:“多数”是指副本集成员的大多数。

要么:

在2.6版中进行了更改:在主/从部署中,MongoDB将w:“多数”等同于w:1.在MongoDB的早期版本中,w:“多数”在主/从部署中产生错误。

另外,我想知道“多数”是指v3.2文档中的所有投票节点:

请求确认写入操作已传播到大多数投票节点[1],包括主要节点。

这是否意味着即使仲裁员也可以计数,因为他们是投票节点?因此,例如,如果我有一个由2个数据承载节点加上1个仲裁器组成的replSet,则即使有1个数据承载节点发生故障,因为剩余的数据承载节点已确认该写入,所以具有写关注“多数”的写操作将成功和仲裁人,因此占多数?

mongodb

3
推荐指数
1
解决办法
1864
查看次数