Apache Geode
Switch branches/tags
Clone or download
upthewaterspout GEODE-4872: Fixing logging tests in PersistentColocatedPartitionedReg…
…ionDUnitTest

This test had a number of tests making assertions about log messages.
Unfortunately, these tests had assertions inside of a try/finally block,
and the finally had a return. Therefore the assertion failures were
simply ignored, and the test was just a test that the callables returned
in 60 seconds.

Fixing this test by removing the bad verify calls and returns in finally
blocks.

Cleaning up the way the tests hooked into the logging system.
Latest commit cc30e48 Oct 9, 2018
Permalink
Failed to load latest commit information.
.github GEODE-2897 Add PR template for github May 11, 2017
buildSrc GEODE-5893: Keep docker configuration in RepeatTest Oct 17, 2018
ci GEODE-5907 patch gradle in a cross-platform-friendly way Oct 19, 2018
dev-tools GEODE-3870: move region entry classes to new entries package (#972) Oct 25, 2017
docker Update dockerfile for v1.6.0 May 2, 2018
etc GEODE-5254: Configure spotless to refrain from joining wrapped lines (#… May 25, 2018
extensions GEODE-5885: Exclude geode-core from geode-[jd]unit dependencies. (#2640) Oct 19, 2018
geode-assembly GEODE-5885: Exclude geode-core from geode-[jd]unit dependencies. (#2640) Oct 19, 2018
geode-book GEODE-5695: Update Gemfile.lock to Sprockets 3.7.2 Sep 5, 2018
geode-common GEODE-5885: Exclude geode-core from geode-[jd]unit dependencies. (#2640) Oct 19, 2018
geode-concurrency-test GEODE-5879 Enforces consistent syntax in gradle dependency declaration ( Oct 17, 2018
geode-connectors GEODE-5885: Exclude geode-core from geode-[jd]unit dependencies. (#2640) Oct 19, 2018
geode-core GEODE-4872: Fixing logging tests in PersistentColocatedPartitionedReg… Oct 19, 2018
geode-cq GEODE-5885: Exclude geode-core from geode-[jd]unit dependencies. (#2640) Oct 19, 2018
geode-docs GEODE-5845 Document not to use enums for keys (#2605) Oct 17, 2018
geode-dunit Merge pull request #2670 from onichols-pivotal/GEODE-5905 Oct 19, 2018
geode-experimental-driver GEODE-5885: Exclude geode-core from geode-[jd]unit dependencies. (#2640) Oct 19, 2018
geode-json GEODE-5665: Adds checkPom target to all sub-projects (#2403) Aug 31, 2018
geode-junit GEODE-5424: Adding a spotless rule to enforce using GeodeAwaitility Oct 19, 2018
geode-lucene GEODE-5885: Exclude geode-core from geode-[jd]unit dependencies. (#2640) Oct 19, 2018
geode-old-client-support GEODE-5879 Enforces consistent syntax in gradle dependency declaration ( Oct 17, 2018
geode-old-versions GEODE-5852: Adding 1.7.0 to old version (#2596) Oct 18, 2018
geode-protobuf-messages GEODE-5879 Enforces consistent syntax in gradle dependency declaration ( Oct 17, 2018
geode-protobuf GEODE-5885: Exclude geode-core from geode-[jd]unit dependencies. (#2640) Oct 19, 2018
geode-pulse GEODE-5885: Exclude geode-core from geode-[jd]unit dependencies. (#2640) Oct 19, 2018
geode-rebalancer GEODE-5885: Exclude geode-core from geode-[jd]unit dependencies. (#2640) Oct 19, 2018
geode-wan GEODE-5885: Exclude geode-core from geode-[jd]unit dependencies. (#2640) Oct 19, 2018
geode-web-api GEODE-5885: Exclude geode-core from geode-[jd]unit dependencies. (#2640) Oct 19, 2018
geode-web Merge pull request #2670 from onichols-pivotal/GEODE-5905 Oct 19, 2018
gradle Merge pull request #2643 from onichols-pivotal/GEODE-5846 Oct 19, 2018
.gitattributes [#150615582] limit .gitattributes to only java files Aug 28, 2017
.gitignore GEODE-5484: Add Eclipse artifacts bin/ and .metadata to .gitignore Jul 27, 2018
BUILDING.md Adding IntelliJ setup instructions to BUILDING.md (#2456) Sep 12, 2018
KEYS Adding pgp signature for Nabarun Nag in KEYS May 18, 2018
LICENSE GEODE-5535: Upgrade FastClasspathScanner to 4.0.6 (#2310) Aug 12, 2018
NOTICE Update NOTICE with 2018 copyright Feb 2, 2018
README.md GEODE-5864 - Refactor and parameterize CI env creation Oct 15, 2018
TESTING.md Fixing typo in TESTING.md Sep 22, 2018
build.gradle GEODE-5846 GEODE-5850 GEODE-5860 GEODE-5862 GEODE-5878 no JAVA_HOME Oct 18, 2018
gradle.properties GEODE-5846 GEODE-5850 GEODE-5860 GEODE-5862 GEODE-5878 no JAVA_HOME Oct 18, 2018
gradlew GEODE-4791: Enable gradle 4.8 for features and futureproofing (#2050) Jun 19, 2018
gradlew.bat GEODE-4791: Enable gradle 4.8 for features and futureproofing (#2050) Jun 19, 2018
settings.gradle GEODE-5604 Update gradle syntax to comply with 5.0 (#2350) Aug 28, 2018

README.md

Build Status License Maven Central homebrew Docker Pulls

Contents

  1. Overview
  2. How to Get Apache Geode
  3. Main Concepts and Components
  4. Location of Directions for Building from Source
  5. Geode in 5 minutes
  6. Application Development
  7. Documentation
  8. Wiki
  9. How to Contribute?
  10. Export Control

Overview

Apache Geode is a data management platform that provides real-time, consistent access to data-intensive applications throughout widely distributed cloud architectures.

Apache Geode pools memory, CPU, network resources, and optionally local disk across multiple processes to manage application objects and behavior. It uses dynamic replication and data partitioning techniques to implement high availability, improved performance, scalability, and fault tolerance. In addition to being a distributed data container, Apache Geode is an in-memory data management system that provides reliable asynchronous event notifications and guaranteed message delivery.

Apache Geode is a mature, robust technology originally developed by GemStone Systems. Commercially available as GemFire™, it was first deployed in the financial sector as the transactional, low-latency data engine used in Wall Street trading platforms. Today Apache Geode technology is used by hundreds of enterprise customers for high-scale business applications that must meet low latency and 24x7 availability requirements.

How to Get Apache Geode

You can download Apache Geode from the website, run a Docker image, or install with homebrew on OSX. Application developers can load dependencies from Maven Central.

Maven

<dependencies>
    <dependency>
        <groupId>org.apache.geode</groupId>
        <artifactId>geode-core</artifactId>
        <version>$VERSION</version>
    </dependency>
</dependencies>

Gradle

dependencies {
  compile "org.apache.geode:geode-core:$VERSION"
}

Main Concepts and Components

Caches are an abstraction that describe a node in an Apache Geode distributed system.

Within each cache, you define data regions. Data regions are analogous to tables in a relational database and manage data in a distributed fashion as name/value pairs. A replicated region stores identical copies of the data on each cache member of a distributed system. A partitioned region spreads the data among cache members. After the system is configured, client applications can access the distributed data in regions without knowledge of the underlying system architecture. You can define listeners to receive notifications when data has changed, and you can define expiration criteria to delete obsolete data in a region.

Locators provide clients with both discovery and server load balancing services. Clients are configured with locator information, and the locators maintain a dynamic list of member servers. The locators provide clients with connection information to a server.

Apache Geode includes the following features:

  • Combines redundancy, replication, and a "shared nothing" persistence architecture to deliver fail-safe reliability and performance.
  • Horizontally scalable to thousands of cache members, with multiple cache topologies to meet different enterprise needs. The cache can be distributed across multiple computers.
  • Asynchronous and synchronous cache update propagation.
  • Delta propagation distributes only the difference between old and new versions of an object (delta) instead of the entire object, resulting in significant distribution cost savings.
  • Reliable asynchronous event notifications and guaranteed message delivery through optimized, low latency distribution layer.
  • Data awareness and real-time business intelligence. If data changes as you retrieve it, you see the changes immediately.
  • Integration with Spring Framework to speed and simplify the development of scalable, transactional enterprise applications.
  • JTA compliant transaction support.
  • Cluster-wide configurations that can be persisted and exported to other clusters.
  • Remote cluster management through HTTP.
  • REST APIs for REST-enabled application development.
  • Rolling upgrades may be possible, but they will be subject to any limitations imposed by new features.

Building this Release from Source

See BUILDING.md for instructions on how to build the project.

Running Tests

See TESTING.md for instructions on how to run tests.

Geode in 5 minutes

Geode requires installation of JDK version 1.8. After installing Apache Geode, start a locator and server:

$ gfsh
gfsh> start locator
gfsh> start server

Create a region:

gfsh> create region --name=hello --type=REPLICATE

Write a client application (this example uses a Gradle build script):

build.gradle

apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'HelloWorld'

repositories { mavenCentral() }
dependencies {
  compile 'org.apache.geode:geode-core:1.4.0'
  runtime 'org.slf4j:slf4j-log4j12:1.7.24'
}

src/main/java/HelloWorld.java

import java.util.Map;
import org.apache.geode.cache.Region;
import org.apache.geode.cache.client.*;

public class HelloWorld {
  public static void main(String[] args) throws Exception {
    ClientCache cache = new ClientCacheFactory()
      .addPoolLocator("localhost", 10334)
      .create();
    Region<String, String> region = cache
      .<String, String>createClientRegionFactory(ClientRegionShortcut.CACHING_PROXY)
      .create("hello");

    region.put("1", "Hello");
    region.put("2", "World");

    for (Map.Entry<String, String>  entry : region.entrySet()) {
      System.out.format("key = %s, value = %s\n", entry.getKey(), entry.getValue());
    }
    cache.close();
  }
}

Build and run the HelloWorld example:

$ gradle run

The application will connect to the running cluster, create a local cache, put some data in the cache, and print the cached data to the console:

key = 1, value = Hello
key = 2, value = World

Finally, shutdown the Geode server and locator:

gfsh> shutdown --include-locators=true

For more information see the Geode Examples repository or the documentation.

Application Development

Apache Geode applications can be written in these client technologies:

The following libraries are available external to the Apache Geode project:

Export Control

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

The following provides more details on the included cryptographic software: