Skip to content

Commit 3bee08e

Browse files
committed
Merge branch 'gh-5095_pipeline-migration' of github.com:gchq/stroom into 7.10
2 parents 91f5c1b + 7f77bea commit 3bee08e

File tree

6 files changed

+79
-8
lines changed

6 files changed

+79
-8
lines changed

stroom-app/src/test/java/stroom/test/MockServiceModule.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import stroom.activity.mock.MockActivityModule;
44
import stroom.cache.impl.CacheModule;
55
import stroom.cache.service.impl.CacheServiceModule;
6+
import stroom.cluster.lock.mock.MockClusterLockModule;
67
import stroom.core.dataprocess.PipelineStreamTaskModule;
78
import stroom.data.store.mock.MockStreamStoreModule;
89
import stroom.dictionary.mock.MockWordListProviderModule;
@@ -95,6 +96,7 @@ protected void configure() {
9596
install(new MockXmlSchemaModule());
9697
install(new MockStateModule());
9798
install(new MockPlanBModule());
99+
install(new MockClusterLockModule());
98100

99101
bind(ContentPackUserService.class).to(MockSecurityContext.class);
100102
bind(HttpClientFactory.class).to(BasicHttpClientFactory.class);

stroom-pipeline/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ dependencies {
77
implementation project(':stroom-data:stroom-data-store-api')
88
implementation project(':stroom-docref')
99
implementation project(':stroom-core-shared')
10+
// Just for pipeline migration, remove after 7.10
11+
implementation project(':stroom-cluster:stroom-cluster-lock-api')
1012
implementation project(':stroom-cluster:stroom-cluster-task-api')
1113
implementation project(':stroom-data:stroom-data-store-api')
1214
implementation project(':stroom-dictionary:stroom-dictionary-api')

stroom-pipeline/src/main/java/stroom/pipeline/PipelineStoreImpl.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package stroom.pipeline;
1818

19+
import stroom.cluster.lock.api.ClusterLockService;
1920
import stroom.docref.DocRef;
2021
import stroom.docref.DocRefInfo;
2122
import stroom.docstore.api.AuditFieldFilter;
@@ -63,20 +64,22 @@ public PipelineStoreImpl(final StoreFactory storeFactory,
6364
final PipelineSerialiser serialiser,
6465
final Provider<ProcessorFilterService> processorFilterServiceProvider,
6566
final Provider<ProcessorService> processorServiceProvider,
66-
final PipelineDataMigration pipelineDataMigration) {
67+
final PipelineDataMigration pipelineDataMigration,
68+
final ClusterLockService clusterLockService) {
6769
this.processorServiceProvider = processorServiceProvider;
6870
this.store = storeFactory.createStore(serialiser, PipelineDoc.TYPE, PipelineDoc.class);
6971
this.processorFilterServiceProvider = processorFilterServiceProvider;
7072
this.pipelineDataMigration = pipelineDataMigration;
7173

7274
// TODO : Remove this code when we move past version 7.10
73-
store.migratePipelines(data -> {
74-
if (pipelineDataMigration.migrate(data)) {
75-
return Optional.of(data);
76-
} else {
77-
return Optional.empty();
78-
}
79-
});
75+
clusterLockService.lock("PIPELINE_MIGRATION", () ->
76+
store.migratePipelines(data -> {
77+
if (pipelineDataMigration.migrate(data)) {
78+
return Optional.of(data);
79+
} else {
80+
return Optional.empty();
81+
}
82+
}));
8083
}
8184

8285
////////////////////////////////////////////////////////////////////////

stroom-processor/stroom-processor-impl/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ ext.moduleName = 'stroom.processor.impl'
33
dependencies {
44
implementation project(':stroom-cache:stroom-cache-api')
55
implementation project(':stroom-cluster:stroom-cluster-lock-api')
6+
implementation project(':stroom-cluster:stroom-cluster-lock-mock')
67
implementation project(':stroom-cluster:stroom-cluster-task-api')
78
implementation project(':stroom-config:stroom-config-common')
89
implementation project(':stroom-core-shared')

stroom-processor/stroom-processor-impl/src/main/java/stroom/processor/impl/MockProcessorModule.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package stroom.processor.impl;
1818

19+
import stroom.cluster.lock.api.ClusterLockService;
20+
import stroom.cluster.lock.mock.MockClusterLockService;
1921
import stroom.processor.api.ProcessorFilterService;
2022
import stroom.processor.api.ProcessorService;
2123
import stroom.util.guice.GuiceUtil;
@@ -34,6 +36,7 @@ protected void configure() {
3436
bind(ProcessorService.class).to(ProcessorServiceImpl.class);
3537
bind(ProcessorFilterDao.class).to(MockProcessorFilterDao.class);
3638
bind(ProcessorTaskDao.class).to(MockProcessorTaskDao.class);
39+
bind(ClusterLockService.class).to(MockClusterLockService.class);
3740

3841
GuiceUtil.buildMultiBinder(binder(), Clearable.class)
3942
.addBinding(MockProcessorDao.class)
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
* Issue **#5095** : Lock the cluster to perform pipeline migration to prevent other nodes clashing.
2+
3+
4+
```sh
5+
# ********************************************************************************
6+
# Issue title: Pipeline Mig ERROR
7+
# Issue link: https://github.com/gchq/stroom/issues/5095
8+
# ********************************************************************************
9+
10+
# ONLY the top line will be included as a change entry in the CHANGELOG.
11+
# The entry should be in GitHub flavour markdown and should be written on a SINGLE
12+
# line with no hard breaks. You can have multiple change files for a single GitHub issue.
13+
# The entry should be written in the imperative mood, i.e. 'Fix nasty bug' rather than
14+
# 'Fixed nasty bug'.
15+
#
16+
# Examples of acceptable entries are:
17+
#
18+
#
19+
# * Issue **123** : Fix bug with an associated GitHub issue in this repository
20+
#
21+
# * Issue **namespace/other-repo#456** : Fix bug with an associated GitHub issue in another repository
22+
#
23+
# * Fix bug with no associated GitHub issue.
24+
25+
26+
# --------------------------------------------------------------------------------
27+
# The following is random text to make this file unique for git's change detection
28+
# cRsUJz362xSx1re1lqXYbDZsLSsSNos3fIh7CYCnfJG4WbLFSeKV7jYkZpRFN9mDYjQfczijubaX7d1w
29+
# gYLSIhbkmxK2nofweYsUnSENg0MuLKALe2QiAYYWFRbqDQrzN4qDU4XFtO3PinDZiRGpQmcGAnjD4vSJ
30+
# ESgyR6aft8NxROC4qp7d0nzISstZSX4v5BfDz9z10qNOX9NJYXd4U0PPDJA0Wjf9exD8KyHw6WYZGXbG
31+
# YF9Mxz679Qwrmx9Vo9IPVXrgBKMHSI0dMKMNtxCEOS2eiumpqU5iEAzJtXs7CowSGcAPl9JIUwSOQZIo
32+
# uHuiTfEVroQv8oty20NNKR26KzvazxZAYnAtlBU8atlEOTSJAfvIWUSm1Uh88T6AZ3YCIXMBTfLAtWAQ
33+
# wdpT0uVzE12kb0ICAhj3NQVu1Gla7pECgENX8o5xvo3uNX4qGZ2JeOr8dY3AgulM2tzfZu6Bn6IV95G9
34+
# uvj2XCrUCIYxBW2muqJVVx99ZQLsVy3N7ajBLh0aMaJi6HKEqRdg2ODhCbHBdfSKMKWFS7vnG8mPzUHb
35+
# EZryg2dgekuVy2XTVkbXUNPAI2UjJHTz4clnmWnZKApAftYGJkz145x6HPNVd0GttziRBZhGbXbTdeg7
36+
# 1LEkU3SOgPTyhynIkDywr6OiAjXHgdynB9Fsu0CNyMUkHTdciQUXSZ8vxqgb6ikUp4bwi8FPInrLiCXX
37+
# ev3QP3m93gb9nRZrQWLOLlzrYxKXTMIeLvf7IUf5h6BeeV0nL7f09iVzRtaUtFVVwA8bUFuOMdxcm56c
38+
# QHc5mWhegcyMqjmiNgMjmsKinAJMosZ9Au6GZ3qLIobD3SaxWI2CRtHR0prqsrDshmfP3e1F3YiOwh3p
39+
# fuopZJ6DnF3cfKqwt6rSQyVrD8oHHz63NRmByQMhRFl519D7prRl9qmGFVMjBpOhXR0FhkQK0Z8hlpKY
40+
# DACu7PxU4iObGpIXa4NgBVdb4Ij1oQiPSzAALWIyga5tRi98iqI9Hvi2ovbGYhIGDk68UthB5XVIr8g0
41+
# 9bkO63gYJK87tZrmJXSUZ5rxKMcnqnocrJ78fNoCH9D14wgk2I0p7QUWxPVHXsxlLipgvtFo3pp1HtVc
42+
# ffLP2kT21cH07Spv31Hkf1VS1XZOLbYo96Wzl4EGL4i0XzUfqMjg9glQBBxOipMNURVkXZP9dIG9I1gS
43+
# bpUfxGoCCUc8ol4hHPttM3sCOjkypCyhaz0nMbTG8YpRBUSwf34wkvD185djhaUbiC74pcNMsRUUkole
44+
# dG2slPrETcANMqeZEeW2rmHq3vj3OYz5JbwPogTUo7ybpHP6ZVg8qA6zVHcqTY8GIlmhDboPArJMYyzb
45+
# ZWIZ2dpwmbpug4qQWe4UW1UpWk9Fv0L2b6hh2cGK2DqPZAWEnIlFm32xXJoo0lzHa3AcWGlGE5v3CkE3
46+
# 7PnGJBXt6mVvDEzMRZhPA01ahntymrOpuK8H3bKjkTdkvUA8jrdzOXSunloTsuH8DNAqOJiqEL7VpLhk
47+
# UsfHO16ZU0poBvveB8tp7gYUspK7K2X0LxKDspf3wYX1JAJ6KozTy2an3eh4qBpZkD31mJGg6EGmF6Ei
48+
# LXeQUZ8NwlJL3XE4mPJgWdC3NSicAS3424mMUVpC9XK5pC0hThxYNsrb3UPPoQGdptqqWqvKlYtQAxzE
49+
# Zh0nSk7wtOwoXKfML43pQhTc0JrgnoEIlCp9KvEJAlLCiLOrPic1F4ytKXvg16cBVb8ph6opBrAR6yBH
50+
# 4OVVkFpG3TVYxl1p6464P5tQl96TeqTUCCms7XXoOvTtyilEP9nU05zMRmRnmCYkTP5HnO5hvTmuBYj9
51+
# xv2Aiyex5PBbwqJxFNq5IFPOBAq7bkI5n8wi6SfZFjMLZLMhjgcTQezg6kACUczMgLy8JisIYSlEXXfu
52+
# sFVZjoRlMzjSVWVGP92rLVLi90DOfQzEeTKINZtSwpu0MSY8998Z7eq44XHKvCvX0d4l7kGjXpvrKalJ
53+
# TKIBNEGnho4WDx48YQyE5kBnf3oMgsowGnkr3JoSovb7d7ARddsBpAYyKh0BWb0nhOOyhC6yaULkscup
54+
# 31AMcxcvrZXSnNOZ6bCOi0G8Txj3beMFql2KhifMqxU7Dr1Sw9zLWtRGxHOtHExQ06mSftBd0PFyQuuq
55+
# Od5sRWgjlFEwdfbLA7HqErpDYsnMABJJYxLNYSOQsM9YqEFZ7QHJgD1daO2DbdYCbcm9kQTovuPs4gvE
56+
# Vjkmdwcz63K3hYMufIcj5UafMU7AgT2IYRhujvtmQOJH7wukAtZIUdj5HTzZ9Rpmv7MqiIXnFMXbmgjz
57+
# Ef2swVvz14aMFAYPhwjggQcADtYQBBxRKXJcdYfsKllGN00izPtN0gYMpKqmkZNcPwPqlZ2G34c3m5YK
58+
# --------------------------------------------------------------------------------
59+
60+
```

0 commit comments

Comments
 (0)