aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnna Koskinen <Ansku@users.noreply.github.com>2020-07-30 13:01:44 +0300
committerGitHub <noreply@github.com>2020-07-30 13:01:44 +0300
commit9d027171e6507ecab9051456037c7db013d8cb4b (patch)
tree084249990cd71ccf5f99a43338d454390257dfb6
parent17baaf01b7d5b942856f5be8ba21f3c2918b45e5 (diff)
downloadvaadin-framework-9d027171e6507ecab9051456037c7db013d8cb4b.tar.gz
vaadin-framework-9d027171e6507ecab9051456037c7db013d8cb4b.zip
Use queue for resync requests. (#12043)
There might be pending requests in the queue when a resync request is made (e.g. through a theme change). This can cause conflicts if the resync request is handled immediately. Therefore the resync request should also be added to the queue and only get resolved when doSendInvocationsToServer() gets triggered again. Fixes #11954
-rw-r--r--client/src/main/java/com/vaadin/client/communication/MessageSender.java20
1 files changed, 13 insertions, 7 deletions
diff --git a/client/src/main/java/com/vaadin/client/communication/MessageSender.java b/client/src/main/java/com/vaadin/client/communication/MessageSender.java
index cde6657d1a..9a443adb2e 100644
--- a/client/src/main/java/com/vaadin/client/communication/MessageSender.java
+++ b/client/src/main/java/com/vaadin/client/communication/MessageSender.java
@@ -47,6 +47,7 @@ public class MessageSender {
private ApplicationConnection connection;
private boolean hasActiveRequest = false;
+ private boolean resynchronizeRequested = false;
/**
* Counter for the messages send to the server. First sent message has id 0.
@@ -98,7 +99,7 @@ public class MessageSender {
private void doSendInvocationsToServer() {
ServerRpcQueue serverRpcQueue = getServerRpcQueue();
- if (serverRpcQueue.isEmpty()) {
+ if (serverRpcQueue.isEmpty() && !resynchronizeRequested) {
return;
}
@@ -110,7 +111,7 @@ public class MessageSender {
JsonArray reqJson = serverRpcQueue.toJson();
serverRpcQueue.clear();
- if (reqJson.length() == 0) {
+ if (reqJson.length() == 0 && !resynchronizeRequested) {
// Nothing to send, all invocations were filtered out (for
// non-existing connectors)
getLogger().warning(
@@ -124,6 +125,11 @@ public class MessageSender {
Version.getFullVersion());
connection.getConfiguration().setWidgetsetVersionSent();
}
+ if (resynchronizeRequested) {
+ getLogger().info("Resynchronizing from server");
+ extraJson.put(ApplicationConstants.RESYNCHRONIZE_ID, true);
+ resynchronizeRequested = false;
+ }
if (showLoadingIndicator) {
connection.getLoadingIndicator().trigger();
}
@@ -239,7 +245,8 @@ public class MessageSender {
hasActiveRequest = false;
if (connection.isApplicationRunning()) {
- if (getServerRpcQueue().isFlushPending()) {
+ if (getServerRpcQueue().isFlushPending()
+ || resynchronizeRequested) {
sendInvocationsToServer();
}
runPostRequestHooks(connection.getConfiguration().getRootPanelId());
@@ -350,10 +357,9 @@ public class MessageSender {
*/
public void resynchronize() {
getMessageHandler().onResynchronize();
- getLogger().info("Resynchronizing from server");
- JsonObject resyncParam = Json.createObject();
- resyncParam.put(ApplicationConstants.RESYNCHRONIZE_ID, true);
- send(Json.createArray(), resyncParam);
+ getLogger().info("Resynchronize from server requested");
+ resynchronizeRequested = true;
+ sendInvocationsToServer();
}
/**
table29'>backport/47628/stable29 Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
summaryrefslogtreecommitdiffstats
path: root/.github/workflows/command-compile.yml
blob: a1255cffc8f3a5d72c80ca7ee6dfd4cf17c787b6 (plain)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
name: Compile Command
on:
  issue_comment:
    types: [created]

jobs:
  init:
    runs-on: ubuntu-latest

    # On pull requests and if the comment starts with `/compile`
    if: github.event.issue.pull_request != '' && startsWith(github.event.comment.body, '/compile')

    outputs:
      git_path: ${{ steps.git-path.outputs.path }}
      arg1: ${{ steps.command.outputs.arg1 }}
      arg2: ${{ steps.command.outputs.arg2 }}
      head_ref: ${{ steps.comment-branch.outputs.head_ref }}

    steps:
      - name: Check actor permission
        uses: skjnldsv/check-actor-permission@e591dbfe838300c007028e1219ca82cc26e8d7c5 # v2
        with:
          require: write

      - name: Add reaction on start
        uses: peter-evans/create-or-update-comment@ca08ebd5dc95aa0cd97021e9708fcd6b87138c9b # v3.0.1
        with:
          token: ${{ secrets.COMMAND_BOT_PAT }}
          repository: ${{ github.event.repository.full_name }}
          comment-id: ${{ github.event.comment.id }}
          reactions: "+1"

      - name: Parse command
        uses: skjnldsv/parse-command-comment@7cef1df370a99dfd5bf896d50121390c96785db8 # v2
        id: command

      # Init path depending on which command is run
      - name: Init path
        id: git-path
        run: |
          if ${{ startsWith(steps.command.outputs.arg1, '/') }}; then
            echo "path=${{ github.workspace }}${{steps.command.outputs.arg1}}" >> $GITHUB_OUTPUT
          else
            echo "path=${{ github.workspace }}${{steps.command.outputs.arg2}}" >> $GITHUB_OUTPUT
          fi

      - name: Init branch
        uses: xt0rted/pull-request-comment-branch@d97294d304604fa98a2600a6e2f916a84b596dc7 # v1
        id: comment-branch

  process:
    runs-on: ubuntu-latest
    needs: init

    steps:
      - name: Checkout ${{ needs.init.outputs.head_ref }}
        uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
        with:
          token: ${{ secrets.COMMAND_BOT_PAT }}
          fetch-depth: 0
          ref: ${{ needs.init.outputs.head_ref }}

      - name: Setup git
        run: |
          git config --local user.email "nextcloud-command@users.noreply.github.com"
          git config --local user.name "nextcloud-command"

      - name: Read package.json node and npm engines version
        uses: skjnldsv/read-package-engines-version-actions@0ce2ed60f6df073a62a77c0a4958dd0fc68e32e7 # v2.1
        id: package-engines-versions
        with:
          fallbackNode: '^16'
          fallbackNpm: '^7'

      - name: Set up node ${{ steps.package-engines-versions.outputs.nodeVersion }}
        uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3
        with:
          node-version: ${{ steps.package-engines-versions.outputs.nodeVersion }}
          cache: npm

      - name: Set up npm ${{ steps.package-engines-versions.outputs.npmVersion }}
        run: npm i -g npm@"${{ steps.package-engines-versions.outputs.npmVersion }}"

      - name: Install dependencies & build
        run: |
          npm ci
          npm run build --if-present

      - name: Commit and push default
        if: ${{ needs.init.outputs.arg1 != 'fixup' && needs.init.outputs.arg1 != 'amend' }}
        run: |
          git add ${{ needs.init.outputs.git_path }}
          git commit --signoff -m 'chore(assets): Recompile assets'
          git push origin ${{ needs.init.outputs.head_ref }}

      - name: Commit and push fixup
        if: ${{ needs.init.outputs.arg1 == 'fixup' }}
        run: |
          git add ${{ needs.init.outputs.git_path }}
          git commit --fixup=HEAD --signoff
          git push origin ${{ needs.init.outputs.head_ref }}

      - name: Commit and push amend
        if: ${{ needs.init.outputs.arg1 == 'amend' }}
        run: |
          git add ${{ needs.init.outputs.git_path }}
          git commit --amend --no-edit --signoff
          git push --force origin ${{ needs.init.outputs.head_ref }}

      - name: Add reaction on failure
        uses: peter-evans/create-or-update-comment@ca08ebd5dc95aa0cd97021e9708fcd6b87138c9b # v3.0.1
        if: failure()
        with:
          token: ${{ secrets.COMMAND_BOT_PAT }}
          repository: ${{ github.event.repository.full_name }}
          comment-id: ${{ github.event.comment.id }}
          reactions: "-1"