tchlyah / couchmove Goto Github PK
View Code? Open in Web Editor NEWJava data migration tool for Couchbase
License: Apache License 2.0
Java data migration tool for Couchbase
License: Apache License 2.0
Support of URL format which is more compliant with JDK expectations. Currently loading of the changelogs from the nested jar supports only the old format of the path like jar:file:/tmp/some-1.0.jar!/BOOT-INF/classes!/couchbase/changelog/v1
but needs to support more compliant version like jar:nested:/tmp/some-1.0.jar/!BOOT-INF/classes/!/couchbase/changelog/v1
. This will also help to use the couchmove with the latest versions of the Spring Boot Uber jar.
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.2-Release-Notes#nested-jar-support
Implement new Scopes and Collections that came with Couchbase 7
Seems like an enhancement would be helpful in regards to how scopes and collections work.
The following script will fail:
CREATE SCOPE bucket.scope;
CREATE COLLECTION bucket.scope.collection;
INSERT INTO bucket.scope.collection...
because the first statement returns before the scope was actually created. And the second one will not find a scope to add a collection to. If it manages to execute the second line because the scope somehow was created very fast then the third insert will fail if the collection might not be available yet.
This is reproducible within couchmove and even couchbase admin tool query.
If would be nice to add a function like
WAIT_UNTIL(select list of scopes where scope = '...' );
that will loop until the statement returns at least one record.
Hi,
This seems to be exactly like flyway replacement for couchbase. I'm not familiar with Java and its tooling. So I'm not sure if this is a lib or there is standalone executable with command line/config file options to run migrations? Or even better to be run as docker container?
Hello,
Thank you for the great product, first of all!
We've faced with a problem to apply migrations from two nodes of a single service.
First node creates an index once started, which is ok. The second node starts later and doesn't know if the index already created. Thus, the second node fails with error like "index already created".
Looks like first node created changelog record successfully, but before the second node tested it.
I wonder if you have some mechanism to synchronize nodes?
Thanks,
Currently CouchBase doesn't support FTS index creation via N1QL and I have to relay on Rest API. Will you be able to include RestAPI support in couchmove?
Hello all,
I am at the point of research methods and tools for migrating couchbase documents in an elegant manner.
I saw no description inside the provided wiki page of how failures are handled in here?
Is there a row back to the previous state of the DB?
As well, are there any limitations that could be faced - like a number of records manipulated or something else?
And lastly, is there a way to pass arguments to the statements that should be executed? If they are coming from somewhere else and an application should commit them inside the DB?
Thanks in advance.
With new couchmove 3.0, I am not able to create FTS index , where I have to create FTS index using custom type_field, and type mappings. The same FTS json was working fine in earlier couchmove 2.0 release.
As I want to narrow down the FTS, only with specific attributes having the required value.
Please provide your inputs.
Below the .fts file content under /db/migration, which I am trying to create.
{
"name": "problemSearch",
"type": "fulltext-index",
"params": {
"doc_config": {
"docid_prefix_delim": "",
"docid_regexp": "",
"mode": "type_field",
"type_field": "_class"
},
"mapping": {
"default_analyzer": "standard",
"default_datetime_parser": "dateTimeOptional",
"default_field": "_all",
"default_mapping": {
"dynamic": true,
"enabled": false
},
"default_type": "_default",
"docvalues_dynamic": true,
"index_dynamic": true,
"store_dynamic": false,
"type_field": "_type",
"types": {
"com.bhatt.avengers.supermmanagement.entity.Problem": {
"dynamic": true,
"enabled": true
}
}
},
"store": {
"indexType": "scorch",
"kvStoreName": ""
}
},
"sourceType": "couchbase",
"sourceName": "fault_management"
}
Add .eventing
files to create Eventing functions
New Spring Data Couchbase release (4.0) uses SDK3.
So lack of support for SKK3 in couchmove will block migration to Spring Boot 2.3 in JHipster.
In Flyway, you can pass custom values to your migration scripts, this is really useful, and would need it.
The need I have right now is that the replication factor when creating indexes will not be the same in dev or in prod, so I need a way to pass it correctly to have scripts that will stay the same in all the environments.
I will submit a MR for it shortly
Hi there! Is it possible to build the package of version 3.4 for maven repository? Currently only V3.2.2 is available and that version uses guava-31.0 which has known vulnerabilities. V3.4 already fixes that with the use of guava-32 which is OK.
Thank you
Vasco Pinheiro
We should enable Dependabot to automatically check for updates to our dependencies and create pull requests with the latest versions. This will help us stay up to date with the latest versions of our dependencies and improve the security and stability of our project.
To use Dependabot with Gradle, we need to migrate our Gradle build to use version catalogs, as Dependabot is only compatible with this format.
Hello,
I am trying to use the couchbase branch for jhipster and having some errors with couchmove, but when I come to couchmove's repo there is not documentation on how to use it and configured. the wiki has no content. Any plans for the docs? thanks!
Using Couchmove 2.x
and RBAC, I get the following error for a FTS change :
Caused by: com.github.couchmove.exception.CouchmoveException: Could not store FTS index : {"error":"rest_auth: cbauth.AuthWebCreds, err: Authentication failure", ... }
This does not happen when I used the legacy way to authenticate.
Other type of changes work fine.
Edit : this happens inside of a k8s cluster
Edit 2 : just to be clear, I have upgraded the user to a full admin to be it was not a silly right mistake
I have a file named V42__foo.fts
, containing a valid json for a FTS index.
During migration, the FTS indexes creation fail with this error :
Could not store FTS index : {"error":"rest_auth: cbauth.AuthWebCreds, err: no web credentials found in request","request":{ ... },"status":"fail"}
The code used :
Couchmove couchMove = new Couchmove(couchbaseBucket, couchbaseProperties.getUsername(), couchbaseProperties.getPassword(), "config/couchmove/main/changelog");
couchMove.migrate();
Executing in debut mode showed couchbaseProperties
is correct, but in com.github.couchmove.repository.CouchbaseRepositoryImpl:168
, credentials are empty.
UpsertSearchIndexResponse response = bucket.core() .send(new UpsertSearchIndexRequest(name, jsonContent, username, password)) <= empty
The user has all necessary rights on the bucket.
n1ql
and json
files are migrated correcly.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.