profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/taburet/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.
Sergey Sitnikov taburet Novosibirsk, Russia

laa/orientdb-wikipedia-benchmark 1

Load test of relations of Wikipedia pages (without content) using OrientDB.

laa/orientdb-ycsb-benchmark 0

YCSB benchmark for OrientDB project which was refactored to run inside of gradle

taburet/colorful-sql 0

Hazelcast Project-X, Summer 2018

taburet/hazelcast 0

Open Source In-Memory Data Grid

taburet/hazelcast-client-protocol 0

Hazelcast Open Binary Client Protocol

taburet/hazelcast-code-samples 0

Hazelcast Code Samples

taburet/hazelcast-hibernate5 0

distributed second level cache for your Hibernate

taburet/hazelcast-jet 0

A general purpose distributed data processing engine, built on top of Hazelcast.

taburet/hazelcast-reference-manual 0

Hazelcast Reference Manual

taburet/idea-jmh-plugin 0

Plugin for Itellij IDEA to make benchmarking with JMH easier.

Pull request review commenthazelcast/hazelcast

config/config: add instantiation helper methods from jet

 public Config(String instanceName) {      * @return Config created from a file when exists, otherwise default.      */     public static Config load() {-        return new ExternalConfigurationOverride().overwriteMemberConfig(loadFromFile());+        return applyEnvAndSystemVariableOverrides(loadFromFile(System.getProperties()));     } -    private static Config loadFromFile() {+    private static Config applyEnvAndSystemVariableOverrides(Config cfg) {+        return new ExternalConfigurationOverride().overwriteMemberConfig(cfg);+    }++    private static Config loadFromFile(Properties properties) {         validateSuffixInSystemProperty(SYSPROP_MEMBER_CONFIG);          XmlConfigLocator xmlConfigLocator = new XmlConfigLocator();         YamlConfigLocator yamlConfigLocator = new YamlConfigLocator();          if (xmlConfigLocator.locateFromSystemProperty()) {             // 1. Try loading XML config from the configuration provided in system property-            return new XmlConfigBuilder(xmlConfigLocator).build();+            return new XmlConfigBuilder(xmlConfigLocator).setProperties(properties).build();         } else if (yamlConfigLocator.locateFromSystemProperty()) {             // 2. Try loading YAML config from the configuration provided in system property-            return new YamlConfigBuilder(yamlConfigLocator).build();+            return new YamlConfigBuilder(yamlConfigLocator).setProperties(properties).build();         } else if (xmlConfigLocator.locateInWorkDirOrOnClasspath()) {             // 3. Try loading XML config from the working directory or from the classpath-            return new XmlConfigBuilder(xmlConfigLocator).build();+            return new XmlConfigBuilder(xmlConfigLocator).setProperties(properties).build();         } else if (yamlConfigLocator.locateInWorkDirOrOnClasspath()) {             // 4. Try loading YAML config from the working directory or from the classpath-            return new YamlConfigBuilder(yamlConfigLocator).build();+            return new YamlConfigBuilder(yamlConfigLocator).setProperties(properties).build();         } else {             // 5. Loading the default XML configuration file             xmlConfigLocator.locateDefault();-            return new XmlConfigBuilder(xmlConfigLocator).build();+            return new XmlConfigBuilder(xmlConfigLocator).setProperties(properties).build();+        }+    }++    /**+     * Same as {@link #load() load()}, i.e., loads Config using the default lookup mechanism+     *+     * @return Config created from a file when exists, otherwise default.+     */+    public static Config loadDefault() {+        return load();+    }++    /**+     * Loads Config using the default {@link #load() lookup mechanism} to locate the configuration file+     * and applies variable resolution from the provided properties.+     *+     * @param properties properties to resolve variables in the XML or YAML+     * @return Config created from a file when exists, otherwise default.+     */+    public static Config loadDefault(Properties properties) {+        return applyEnvAndSystemVariableOverrides(loadFromFile(properties));+    }++    /**+     * Creates a Config which is loaded from a classpath resource. The System.properties are used for+     * variable resolution in the configuration file+     *+     * @param classLoader the ClassLoader used to load the resource+     * @param resource the resource, an XML or YAML configuration file from+     *                 the classpath, without the "classpath:" prefix+     * @throws IllegalArgumentException if classLoader or resource is {@code null},+     *                                  or if the resource is not found+     * @throws InvalidConfigurationException if the resource content is invalid+     * @return Config created from the resource+     */+    public static Config loadFromClasspath(ClassLoader classLoader, String resource) {+        return loadFromClasspath(classLoader, resource, System.getProperties());+    }++    /**+     * Creates a Config which is loaded from a classpath resource. Uses the+     * given {@code properties} to resolve the variables in the resource.+     *+     * @param classLoader the ClassLoader used to load the resource+     * @param resource    the resource, an XML or YAML configuration file from+     *                    the classpath, without the "classpath:" prefix+     * @param properties  the properties used to resolve variables in the resource+     * @throws IllegalArgumentException      if classLoader or resource is {@code null},+     *                                       or if the resource is not found+     * @throws InvalidConfigurationException if the resource content is invalid+     * @return Config created from the resource+     */+    public static Config loadFromClasspath(ClassLoader classLoader, String resource, Properties properties) {+        checkTrue(classLoader != null, "classLoader can't be null");+        checkTrue(resource != null, "resource can't be null");+        checkTrue(properties != null, "properties can't be null");++        InputStream stream = classLoader.getResourceAsStream(resource);+        checkTrue(stream != null, "Specified resource '" + resource + "' could not be found!");++        if (resource.endsWith(".xml")) {+            return new XmlConfigBuilder(stream).setProperties(properties).build();         }+        if (resource.endsWith(".yaml") || resource.endsWith(".yml")) {+            return new YamlConfigBuilder(stream).setProperties(properties).build();+        }++        throw new IllegalArgumentException("Unknown configuration file extension");+    }++    /**+     * Creates a Config based on a the provided configuration file (XML or YAML)+     * and uses the System.properties to resolve variables in the file.+     *+     * @param configFile the path of the configuration file+     * @throws FileNotFoundException         if the file doesn't exist+     * @throws InvalidConfigurationException if the file content is invalid+     * @return Config created from the configFile+     */+    public static Config loadFromFile(File configFile) throws FileNotFoundException {+        return loadFromFile(configFile, System.getProperties());+    }++    /**+     * Creates a Config based on a the provided configuration file (XML or YAML)+     * and uses the System.properties to resolve variables in the file.+     *+     * @param configFile the path of the configuration file+     * @param properties properties to use for variable resolution in the file+     * @throws FileNotFoundException         if the file doesn't exist+     * @throws InvalidConfigurationException if the file content is invalid+     * @return Config created from the configFile+     */+    public static Config loadFromFile(File configFile, Properties properties) throws FileNotFoundException {+        checkTrue(configFile != null, "configFile can't be null");+        checkTrue(properties != null, "properties can't be null");++        String path = configFile.getPath();+        InputStream stream = new FileInputStream(configFile);+        if (path.endsWith(".xml")) {+            return new XmlConfigBuilder(stream).setProperties(properties).build();+        }+        if (path.endsWith(".yaml") || path.endsWith(".yml")) {+            return new YamlConfigBuilder(stream).setProperties(properties).build();+        }++        throw new IllegalArgumentException("Unknown configuration file extension");+    }++    /**+     * Creates a Config from the provided string (XML or YAML content) and uses the+     * System.properties for variable resolution.+     *+     * @param source the XML or YAML content+     * @throws IllegalArgumentException if the source is null or empty+     * @throws com.hazelcast.core.HazelcastException if the source content is invalid+     * @return Config created from the string+     */+    public static Config loadFromString(String source) {+        return loadFromString(source, System.getProperties());+    }++    /**+     * Creates a Config from the provided string (XML or YAML content).+     *+     * @param source the XML or YAML content+     * @param properties properties to use for variable resolution+     * @throws IllegalArgumentException if the source is null or empty+     * @throws com.hazelcast.core.HazelcastException if the source content is invalid+     * @return Config created from the string+     */+    public static Config loadFromString(String source, Properties properties) {+        if (isNullOrEmptyAfterTrim(source)) {+            throw new IllegalArgumentException("provided string configuration is null or empty! "+                    + "Please use a well-structured content.");+        }+        Config cfg;+        try {+            byte[] bytes = source.getBytes();+            InputStream stream = new ByteArrayInputStream(bytes);+            cfg = loadFromConfigStream(new ConfigStream(stream, bytes.length), properties);+        } catch (Exception e) {+            throw ExceptionUtil.rethrow(e);+        }+        return cfg;+    }++    /**+     * Creates a Config from the provided stream (XML or YAML content) and uses the+     * System.properties for variable resolution.+     *+     * @param source the XML or YAML stream+     * @throws com.hazelcast.core.HazelcastException if the source content is invalid+     * @return Config created from the stream+     */+    public static Config loadFromStream(InputStream source) {+        return loadFromStream(source, System.getProperties());+    }++    /**+     * Creates a Config from the provided stream (XML or YAML content).+     *+     * @param source the XML or YAML stream+     * @param properties properties to use for variable resolution+     * @throws com.hazelcast.core.HazelcastException if the source content is invalid+     * @return Config created from the stream+     */+    public static Config loadFromStream(InputStream source, Properties properties) {+        Config cfg = null;+        try {+            cfg = loadFromConfigStream(new ConfigStream(source), properties);

Thanks a lot :) It is fixed now.

fbarotov

comment created time in 4 hours

Pull request review commenthazelcast/hazelcast

[4.2 Backport] - Partition Group API now takes members as method argument

 public void start() {     }      @Override-    public PartitionGroupStrategy getPartitionGroupStrategy() {+    public PartitionGroupStrategy getPartitionGroupStrategy(Collection<? extends Member> allMembers) {

I mean this test passes with current 4.2.z but not with your PR:

@Test
    public void testNoBreakingChangeInApi() {
        CustomDiscoveryStrategy strategy = new CustomDiscoveryStrategy();
        assertNull(strategy.getPartitionGroupStrategy());
    }

    static class CustomDiscoveryStrategy extends AbstractDiscoveryStrategy {

        CustomDiscoveryStrategy() {
            super(null, Collections.<String, Comparable>emptyMap());
        }

        @Override
        public Iterable<DiscoveryNode> discoverNodes() {
            return null;
        }
    }

This is a breaking change and we don't do such changes in patch releases.

lprimak

comment created time in 11 hours

Pull request review commenthazelcast/hazelcast

[4.2 Backport] - Partition Group API now takes members as method argument

 public void start() {     }      @Override-    public PartitionGroupStrategy getPartitionGroupStrategy() {+    public PartitionGroupStrategy getPartitionGroupStrategy(Collection<? extends Member> allMembers) {

I am not sure I understand you. Yes, if you take this method in isolation, it is a breaking change. However, this change is not isolated, and is balanced out by the default methods in the interface and changes in the logic in SPIAwareMemberGroupFactory.java. All tests also pass with deprecated and new methods.

If you leave the abstract method "as it" it will not be possible not to override any methods at all, as is possible currently, thus breaking this logic, and the tests will fail.

Perhaps you can suggest an edit that will pass the tests and allow either the deprecated and the "new" method to be overridden with the new method being the default?

lprimak

comment created time in 12 hours

fork rexim/expr

expression eval

fork in 12 hours

Pull request review commenthazelcast/hazelcast

config/config: add instantiation helper methods from jet

 public Config(String instanceName) {      * @return Config created from a file when exists, otherwise default.      */     public static Config load() {-        return new ExternalConfigurationOverride().overwriteMemberConfig(loadFromFile());+        return applyEnvAndSystemVariableOverrides(loadFromFile(System.getProperties()));     } -    private static Config loadFromFile() {+    private static Config applyEnvAndSystemVariableOverrides(Config cfg) {+        return new ExternalConfigurationOverride().overwriteMemberConfig(cfg);+    }++    private static Config loadFromFile(Properties properties) {         validateSuffixInSystemProperty(SYSPROP_MEMBER_CONFIG);          XmlConfigLocator xmlConfigLocator = new XmlConfigLocator();         YamlConfigLocator yamlConfigLocator = new YamlConfigLocator();          if (xmlConfigLocator.locateFromSystemProperty()) {             // 1. Try loading XML config from the configuration provided in system property-            return new XmlConfigBuilder(xmlConfigLocator).build();+            return new XmlConfigBuilder(xmlConfigLocator).setProperties(properties).build();         } else if (yamlConfigLocator.locateFromSystemProperty()) {             // 2. Try loading YAML config from the configuration provided in system property-            return new YamlConfigBuilder(yamlConfigLocator).build();+            return new YamlConfigBuilder(yamlConfigLocator).setProperties(properties).build();         } else if (xmlConfigLocator.locateInWorkDirOrOnClasspath()) {             // 3. Try loading XML config from the working directory or from the classpath-            return new XmlConfigBuilder(xmlConfigLocator).build();+            return new XmlConfigBuilder(xmlConfigLocator).setProperties(properties).build();         } else if (yamlConfigLocator.locateInWorkDirOrOnClasspath()) {             // 4. Try loading YAML config from the working directory or from the classpath-            return new YamlConfigBuilder(yamlConfigLocator).build();+            return new YamlConfigBuilder(yamlConfigLocator).setProperties(properties).build();         } else {             // 5. Loading the default XML configuration file             xmlConfigLocator.locateDefault();-            return new XmlConfigBuilder(xmlConfigLocator).build();+            return new XmlConfigBuilder(xmlConfigLocator).setProperties(properties).build();+        }+    }++    /**+     * Same as {@link #load() load()}, i.e., loads Config using the default lookup mechanism+     *+     * @return Config created from a file when exists, otherwise default.+     */+    public static Config loadDefault() {+        return load();+    }++    /**+     * Loads Config using the default {@link #load() lookup mechanism} to locate the configuration file+     * and applies variable resolution from the provided properties.+     *+     * @param properties properties to resolve variables in the XML or YAML+     * @return Config created from a file when exists, otherwise default.+     */+    public static Config loadDefault(Properties properties) {+        return applyEnvAndSystemVariableOverrides(loadFromFile(properties));+    }++    /**+     * Creates a Config which is loaded from a classpath resource. The System.properties are used for+     * variable resolution in the configuration file+     *+     * @param classLoader the ClassLoader used to load the resource+     * @param resource the resource, an XML or YAML configuration file from+     *                 the classpath, without the "classpath:" prefix+     * @throws IllegalArgumentException if classLoader or resource is {@code null},+     *                                  or if the resource is not found+     * @throws InvalidConfigurationException if the resource content is invalid+     * @return Config created from the resource+     */+    public static Config loadFromClasspath(ClassLoader classLoader, String resource) {+        return loadFromClasspath(classLoader, resource, System.getProperties());+    }++    /**+     * Creates a Config which is loaded from a classpath resource. Uses the+     * given {@code properties} to resolve the variables in the resource.+     *+     * @param classLoader the ClassLoader used to load the resource+     * @param resource    the resource, an XML or YAML configuration file from+     *                    the classpath, without the "classpath:" prefix+     * @param properties  the properties used to resolve variables in the resource+     * @throws IllegalArgumentException      if classLoader or resource is {@code null},+     *                                       or if the resource is not found+     * @throws InvalidConfigurationException if the resource content is invalid+     * @return Config created from the resource+     */+    public static Config loadFromClasspath(ClassLoader classLoader, String resource, Properties properties) {+        checkTrue(classLoader != null, "classLoader can't be null");+        checkTrue(resource != null, "resource can't be null");+        checkTrue(properties != null, "properties can't be null");++        InputStream stream = classLoader.getResourceAsStream(resource);+        checkTrue(stream != null, "Specified resource '" + resource + "' could not be found!");++        if (resource.endsWith(".xml")) {+            return new XmlConfigBuilder(stream).setProperties(properties).build();         }+        if (resource.endsWith(".yaml") || resource.endsWith(".yml")) {+            return new YamlConfigBuilder(stream).setProperties(properties).build();+        }++        throw new IllegalArgumentException("Unknown configuration file extension");+    }++    /**+     * Creates a Config based on a the provided configuration file (XML or YAML)+     * and uses the System.properties to resolve variables in the file.+     *+     * @param configFile the path of the configuration file+     * @throws FileNotFoundException         if the file doesn't exist+     * @throws InvalidConfigurationException if the file content is invalid+     * @return Config created from the configFile+     */+    public static Config loadFromFile(File configFile) throws FileNotFoundException {+        return loadFromFile(configFile, System.getProperties());+    }++    /**+     * Creates a Config based on a the provided configuration file (XML or YAML)+     * and uses the System.properties to resolve variables in the file.+     *+     * @param configFile the path of the configuration file+     * @param properties properties to use for variable resolution in the file+     * @throws FileNotFoundException         if the file doesn't exist+     * @throws InvalidConfigurationException if the file content is invalid+     * @return Config created from the configFile+     */+    public static Config loadFromFile(File configFile, Properties properties) throws FileNotFoundException {+        checkTrue(configFile != null, "configFile can't be null");+        checkTrue(properties != null, "properties can't be null");++        String path = configFile.getPath();+        InputStream stream = new FileInputStream(configFile);+        if (path.endsWith(".xml")) {+            return new XmlConfigBuilder(stream).setProperties(properties).build();+        }+        if (path.endsWith(".yaml") || path.endsWith(".yml")) {+            return new YamlConfigBuilder(stream).setProperties(properties).build();+        }++        throw new IllegalArgumentException("Unknown configuration file extension");+    }++    /**+     * Creates a Config from the provided string (XML or YAML content) and uses the+     * System.properties for variable resolution.+     *+     * @param source the XML or YAML content+     * @throws IllegalArgumentException if the source is null or empty+     * @throws com.hazelcast.core.HazelcastException if the source content is invalid+     * @return Config created from the string+     */+    public static Config loadFromString(String source) {+        return loadFromString(source, System.getProperties());+    }++    /**+     * Creates a Config from the provided string (XML or YAML content).+     *+     * @param source the XML or YAML content+     * @param properties properties to use for variable resolution+     * @throws IllegalArgumentException if the source is null or empty+     * @throws com.hazelcast.core.HazelcastException if the source content is invalid+     * @return Config created from the string+     */+    public static Config loadFromString(String source, Properties properties) {+        if (isNullOrEmptyAfterTrim(source)) {+            throw new IllegalArgumentException("provided string configuration is null or empty! "+                    + "Please use a well-structured content.");+        }+        Config cfg;+        try {+            byte[] bytes = source.getBytes();+            InputStream stream = new ByteArrayInputStream(bytes);+            cfg = loadFromConfigStream(new ConfigStream(stream, bytes.length), properties);+        } catch (Exception e) {+            throw ExceptionUtil.rethrow(e);+        }+        return cfg;+    }++    /**+     * Creates a Config from the provided stream (XML or YAML content) and uses the+     * System.properties for variable resolution.+     *+     * @param source the XML or YAML stream+     * @throws com.hazelcast.core.HazelcastException if the source content is invalid+     * @return Config created from the stream+     */+    public static Config loadFromStream(InputStream source) {+        return loadFromStream(source, System.getProperties());+    }++    /**+     * Creates a Config from the provided stream (XML or YAML content).+     *+     * @param source the XML or YAML stream+     * @param properties properties to use for variable resolution+     * @throws com.hazelcast.core.HazelcastException if the source content is invalid+     * @return Config created from the stream+     */+    public static Config loadFromStream(InputStream source, Properties properties) {+        Config cfg = null;+        try {+            cfg = loadFromConfigStream(new ConfigStream(source), properties);

I believe we might invalidate the config here if it is more than 4K. The ConfigStream was designed to protect against attacks with untrusted streams, therefore we have this limitation. So I would pass the original stream down and if the ConfigStream wrapping it is recognized, we can build the config from the original stream, not from ConfigStream. Not sure if we have the same concerns with the original stream where this Config.load() can be used, probably not.

Alternatively, we can make the used size of the ConfigStream configurable via sysprops, but I think that's not really a good option.

fbarotov

comment created time in 12 hours

pull request commenthazelcast/hazelcast

Remove sleep statements - Reduce delays when joining a cluster

Ok, I think I understand what's happening.

Previously in TcpIpJoinTest (and maybe more tests?) They assumed that cluster structures are filled in with all cluster members, because of artificial join delays, they are pretty much guaranteed to be correct.

With this PR, however, joins are instantaneous, and cluster structures are not guaranteed to be instantly filled in with all members.

PR works correctly, but the tests need to be updated with ...Eventually()

lprimak

comment created time in 12 hours

pull request commenthazelcast/hazelcast

Remove sleep statements - Reduce delays when joining a cluster

@jbartok Thank you for putting the effort in. I agree with your assessment of this problem, as it's the same as mine :) I just had a thought. Perhaps the test itself is wrong. Instead of assertClusterSize() it it needs to be assertClusterSizeEventually()

Sine I cannot reproduce it, I will change the test and see if you can reproduce it in this branch? Thank you!

lprimak

comment created time in 13 hours

issue commenthazelcast/hazelcast

Error when enabling CDC on table with missing primary key is not helpful in diagnosing issue

it's a bad interaction between https://github.com/hazelcast/hazelcast/blob/2797c7ad3cecffa673e2d6f7ae276777885ad155/extensions/cdc-debezium/src/main/java/com/hazelcast/jet/cdc/impl/ChangeRecordImpl.java#L52 which produces NPE with "keyJson" as a message and https://github.com/hazelcast/hazelcast/blob/5ae4aba7250f47aa54d5725d5f917d6c5aec6b1c/extensions/cdc-debezium/src/main/java/com/hazelcast/jet/cdc/impl/CdcSourceP.java#L213 which takes a just message from an exception and appends it to "Failed to connect to database:"

myawnhc

comment created time in 13 hours

issue openedhazelcast/hazelcast

Unable to use digits-only String values in the YAML config

YAML schema validation doesn't handle properly String values containing only digits (in 5.0-SNAPSHOT).

Reproducer:

hazelcast:
  cluster-name: '1234'

Fails with the following stacktrace:

  instance location: #/hazelcast/cluster-name
  keyword location: #/properties/hazelcast/properties/cluster-name

	at com.hazelcast.internal.config.YamlConfigSchemaValidator.wrap(YamlConfigSchemaValidator.java:55)
	at com.hazelcast.internal.config.YamlConfigSchemaValidator.validate(YamlConfigSchemaValidator.java:82)
	at com.hazelcast.config.YamlConfigBuilder.parseAndBuildConfig(YamlConfigBuilder.java:163)
	at com.hazelcast.config.YamlConfigBuilder.build(YamlConfigBuilder.java:134)
	at com.hazelcast.config.YamlConfigBuilder.build(YamlConfigBuilder.java:127)
	at com.hazelcast.config.YamlConfigBuilderTest.buildConfig(YamlConfigBuilderTest.java:1825)
	at com.hazelcast.config.YamlConfigBuilderTest.testClusterName(YamlConfigBuilderTest.java:118)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at com.hazelcast.test.FailOnTimeoutStatement$CallableStatement.call(FailOnTimeoutStatement.java:115)
	at com.hazelcast.test.FailOnTimeoutStatement$CallableStatement.call(FailOnTimeoutStatement.java:1)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.lang.Thread.run(Thread.java:748)

created time in 13 hours

issue openedhazelcast/hazelcast

Error when enabling CDC on table with missing primary key is not helpful in diagnosing issue

https://github.com/hazelcast/hazelcast/blob/2797c7ad3cecffa673e2d6f7ae276777885ad155/extensions/cdc-debezium/src/main/java/com/hazelcast/jet/cdc/impl/ChangeRecordImpl.java#L52

When I enable CDC for a database and one of the tables doesn't have a primary key defined, I get an obscure error message that doesn't point me to the issue:

09:28:40.619 [ WARN] [c.h.j.i.e.TaskletExecutionService] Exception in ProcessorTasklet{InventoryService.CDCPipeline/invservice#0} com.hazelcast.jet.JetException: Failed to connect to database: keyJson at com.hazelcast.jet.cdc.impl.CdcSourceP.reconnect(CdcSourceP.java:213) at com.hazelcast.jet.cdc.impl.CdcSourceP.complete(CdcSourceP.java:193)

The message makes it look like it's trying to connect to a database named 'keyJson', and that name doesn't refer to any database, table, or anything else in user code.

Not sure how much context is available to the code at this point to craft a more useful message, but something indicating that the key being used to access the data source is null would be much more helpful, and if it was possible to name the table involved that would be even better. (In my case it was a secondary table and not the primary so I was looking in the wrong place).

created time in 13 hours

PR opened hazelcast/hazelcast

Increase timeout in test #18936 Type: Test-Failure

closes hazelcast/hazelcast-enterprise#4052

+8 -3

0 comment

1 changed file

pr created time in 14 hours

PR opened hazelcast/hazelcast

Increase timeout in test Type: Test-Failure

closes https://github.com/hazelcast/hazelcast-enterprise/issues/4052

+8 -3

0 comment

1 changed file

pr created time in 14 hours

GollumEvent

pull request commenthazelcast/hazelcast

Update hazelcast-kubernetes dependency version

The job Hazelcast-pr-builder of your PR failed. (Hazelcast internal details: build log, artifacts). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem. <details> <summary>Click to expand the log file</summary> <pre> ---------ERRORS-----------

[ERROR] /home/jenkins/jenkins_slave/workspace/Hazelcast-pr-builder/hazelcast/src/test/java/com/hazelcast/map/impl/mapstore/MapClassLoaderTest.java:135: Undefined reference: java.util.concurrent.ConcurrentHashMap.KeySetView

[ERROR] /home/jenkins/jenkins_slave/workspace/Hazelcast-pr-builder/hazelcast/src/test/java/com/hazelcast/map/impl/mapstore/MapClassLoaderTest.java:135: Undefined reference: java.util.concurrent.ConcurrentHashMap.KeySetView java.util.concurrent.ConcurrentHashMap.keySet()

[ERROR] /home/jenkins/jenkins_slave/workspace/Hazelcast-pr-builder/hazelcast/src/test/java/com/hazelcast/map/impl/mapstore/MapStoreWriteBehindTest.java:622: Undefined reference: java.util.concurrent.ConcurrentHashMap.KeySetView

[ERROR] /home/jenkins/jenkins_slave/workspace/Hazelcast-pr-builder/hazelcast/src/test/java/com/hazelcast/map/impl/mapstore/MapStoreWriteBehindTest.java:622: Undefined reference: java.util.concurrent.ConcurrentHashMap.KeySetView java.util.concurrent.ConcurrentHashMap.keySet()

[ERROR] /home/jenkins/jenkins_slave/workspace/Hazelcast-pr-builder/hazelcast/src/test/java/com/hazelcast/map/impl/mapstore/MapStoreDataLoadingContinuesWhenNodeJoins.java:349: Undefined reference: java.util.concurrent.ConcurrentHashMap.KeySetView

[ERROR] /home/jenkins/jenkins_slave/workspace/Hazelcast-pr-builder/hazelcast/src/test/java/com/hazelcast/map/impl/mapstore/MapStoreDataLoadingContinuesWhenNodeJoins.java:349: Undefined reference: java.util.concurrent.ConcurrentHashMap.KeySetView java.util.concurrent.ConcurrentHashMap.keySet()

</pre> </details>

leszko

comment created time in 14 hours

pull request commenthazelcast/hazelcast

Update hazelcast-kubernetes version

The job Hazelcast-pr-builder of your PR failed. (Hazelcast internal details: build log, artifacts). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem. <details> <summary>Click to expand the log file</summary> <pre>

---------SUMMARY----------

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M3:enforce (enforce-tools) on project hazelcast-distribution: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [Help 1]

</pre> </details>

leszko

comment created time in 14 hours

PR opened hazelcast/hazelcast

Reviewers
Update hazelcast-kubernetes dependency version
+1 -1

0 comment

1 changed file

pr created time in 14 hours

PR opened hazelcast/hazelcast

Reviewers
Update hazelcast-kubernetes version
+1 -1

0 comment

1 changed file

pr created time in 14 hours

create barnchhazelcast/hazelcast

branch : leszko-patch-1-1

created branch time in 14 hours

create barnchhazelcast/hazelcast

branch : leszko-patch-1

created branch time in 14 hours

issue commenthazelcast/hazelcast

com.hazelcast.jet.python.PythonInitCleanupTest

Also fails on Zulu JDK16: http://jenkins.hazelcast.com/view/Official%20Builds/job/Hazelcast-master-ZuluJDK16-nightly/5/

olukas

comment created time in 14 hours

issue commenthazelcast/hazelcast

com.hazelcast.internal.networking.nio.AdvancedNetworkingCommunicationIntegrationTest.testMemberConnectionToEndpoints

Fails also on IBM JDK 8: http://jenkins.hazelcast.com/view/Official%20Builds/job/Hazelcast-master-IbmJDK8-nightly/4/

olukas

comment created time in 14 hours

issue commenthazelcast/hazelcast

com.hazelcast.jet.kafka.impl.StreamKafkaPTest.when_partitionAddedWhileJobDown_then_consumedFromBeginning

Also fails on Corretto JDK 8: http://jenkins.hazelcast.com/view/Official%20Builds/job/Hazelcast-master-CorrettoJDK8/129/

olukas

comment created time in 14 hours

issue openedhazelcast/hazelcast

PhoneHomeIntegrationTest.testMapLatenciesWithMapStore test fails on Windows Oracle JDK8

Failing test com.hazelcast.internal.util.phonehome.PhoneHomeIntegrationTest.testMapLatenciesWithMapStore

Error message

Expected 'mpgtlams' to be greater than or equal to 200, but was 199

Stacktrace

java.lang.AssertionError: Expected 'mpgtlams' to be greater than or equal to 200, but was 199
	at org.junit.Assert.fail(Assert.java:89)
	at org.junit.Assert.assertTrue(Assert.java:42)
	at com.hazelcast.test.HazelcastTestSupport.assertGreaterOrEquals(HazelcastTestSupport.java:1398)
	at com.hazelcast.internal.util.phonehome.PhoneHomeIntegrationTest.testMapLatenciesWithMapStore(PhoneHomeIntegrationTest.java:217)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at com.hazelcast.test.FailOnTimeoutStatement$CallableStatement.call(FailOnTimeoutStatement.java:115)
	at com.hazelcast.test.FailOnTimeoutStatement$CallableStatement.call(FailOnTimeoutStatement.java:107)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.lang.Thread.run(Thread.java:748)

Jenkins build: http://jenkins.hazelcast.com/view/Official%20Builds/job/Hazelcast-4.maintenance-Windows-OracleJDK8/311/

created time in 15 hours

Pull request review commenthazelcast/hazelcast

Support SQL UPDATEs

 protected void addToSelectList(             SelectScope scope,             boolean includeSystemVars     ) {-        if (isHiddenColumn(exp, scope)) {+        if (isHiddenColumn(exp, scope) && !isUpdate) {

Unfortunately, it's not a leftover. Calcite expands * in couple of places during UPDATE. If we omit hidden fields we end up here - so I would say it works purely by accident. On the other hand I wasn't able to devise a proper test in which we could validate isUpdate fulfils it's purpose...

gierlachg

comment created time in 15 hours

Pull request review commenthazelcast/hazelcast

Add support for returning nested fields without deserializing them

 void writePortableGenericRecordInternal(ObjectDataOutput out, PortableGenericRec         writer.end();     } -    <T> T readAsObject(BufferObjectDataInput in, int factoryId, int classId) throws IOException {+    /**+     * Tries to construct the users Portable object first via given factory config.+     * If it can not found the related factory, this will return GenericRecord representation of the object.
     * If it can not find the related factory, this will return GenericRecord representation of the object.
sancar

comment created time in 16 hours

Pull request review commenthazelcast/hazelcast

Add support for returning nested fields without deserializing them

 void writePortableGenericRecordInternal(ObjectDataOutput out, PortableGenericRec         writer.end();     } -    <T> T readAsObject(BufferObjectDataInput in, int factoryId, int classId) throws IOException {+    /**+     * Tries to construct the users Portable object first via given factory config.
     * Tries to construct the user's Portable object first via given factory config.
sancar

comment created time in 16 hours

GollumEvent

Pull request review commenthazelcast/hazelcast

Support SQL UPDATEs

 public Void visit(SqlCall call) {     }      @Override-    public boolean isInfiniteRows() {-        return isInfiniteRows;+    public void validateInsert(SqlInsert insert) {+        super.validateInsert(insert);++        if (!isCreateJob && isInfiniteRows(insert.getSource())) {+            throw newValidationError(insert, RESOURCE.mustUseCreateJob());+        }     } -    private boolean isInfiniteRows(SqlNode node) {-        isInfiniteRows |= containsStreamingSource(node);-        return isInfiniteRows;+    @Override+    protected SqlSelect createSourceSelectForUpdate(SqlUpdate call) {+        isUpdate = true;++        return super.createSourceSelectForUpdate(call);+    }++    @Override+    public void validateUpdate(SqlUpdate update) {+        super.validateUpdate(update);++        // hack around Calcite deficiency of not deriving types for fields in sourceExpressionList...+        // see HazelcastTypeCoercion.coerceSourceRowType()+        SqlNodeList selectList = update.getSourceSelect().getSelectList();+        SqlNodeList sourceExpressionList = update.getSourceExpressionList();+        for (int i = 0; i < sourceExpressionList.size(); i++) {+            update.getSourceExpressionList().set(i, selectList.get(selectList.size() - sourceExpressionList.size() + i));+        }++        SqlNode sourceTable = update.getTargetTable();+        SqlValidatorTable validatorTable = getCatalogReader().getTable(((SqlIdentifier) sourceTable).names);+        if (validatorTable != null) {

We do, that was a leftover from when I had different validation order, removed.

gierlachg

comment created time in 16 hours

Pull request review commenthazelcast/hazelcast

[4.2 Backport] - Partition Group API now takes members as method argument

 public void start() {     }      @Override-    public PartitionGroupStrategy getPartitionGroupStrategy() {+    public PartitionGroupStrategy getPartitionGroupStrategy(Collection<? extends Member> allMembers) {

The intent here is that the original, deprecated method works the same as before.

But it is not working the same as before, now we return an empty-list from parameter-less getPartitionGroupStrategy instead of null. For a patch release scope, we should keep old method as is and should leave the decision to override new method to user. Otherwise this will be a breaking change.

lprimak

comment created time in 19 hours

pull request commenthazelcast/hazelcast

Remove sleep statements - Reduce delays when joining a cluster

I can just as easily reproduce the problem on this branch. Maybe my hardware is different and because of that the delay is not suitable for reproduction on your machine, but the problem is definitely there.

image

Maybe these changes aren't the actual cause of the problem, but they make it much more likely to appear. Let's see when we get some more time to put into fixing it. Until then we can't leave these changes in master.

lprimak

comment created time in 19 hours