Hello.

I use ignite as persistent queues. I create queues dynamically, so every day i 
can create up to 50 quques and stream about 5 million records in each. When i 
don't need this queue anymore, I want to clear my disk space, but it is not 
happenning. Here is some example code.


final IgniteConfiguration cfg = new IgniteConfiguration();
        final DataStorageConfiguration dataStorageConfiguration = new 
DataStorageConfiguration();
        final String igniteStorageDir = "c:\\work\\garbage\\igniteTest\\5";
        System.out.println(igniteStorageDir);
        dataStorageConfiguration.setStoragePath(igniteStorageDir);
        final DataRegionConfiguration defaultDataRegionConfiguration = 
dataStorageConfiguration
                .getDefaultDataRegionConfiguration();
//        defaultDataRegionConfiguration.setMaxSize(igniteDataRegionMaxSize);
        defaultDataRegionConfiguration.setEvictionThreshold(0.9);
        defaultDataRegionConfiguration.setMetricsEnabled(true);
        defaultDataRegionConfiguration.setPersistenceEnabled(true);
        dataStorageConfiguration.setWalMode(WALMode.NONE);
//        dataStorageConfiguration.setWalPath(igniteStorageDir + "/wal");
        cfg.setDataStorageConfiguration(dataStorageConfiguration);
        final Ignite ignite = Ignition.start(cfg);
        ignite.cluster().active(true);
        for (int j = 0; j < 10; j++) {
            final CollectionConfiguration queueConfig = new 
CollectionConfiguration();
            queueConfig.setCacheMode(CacheMode.LOCAL);
//            queueConfig.setBackups(1);
            final String queueName = "queue-" + j;
            queueConfig.setGroupName(queueName);
            final IgniteQueue<Object> queue = ignite
                    .queue(queueName, 0, queueConfig);
            final int i1 = 1000;
            for (int i = 0; i < i1; i++) {
                final String elem1 = UUID.randomUUID().toString();
                queue.put(elem1);
            }
            System.out.println(j + "queue write");
            for (int i = 0; i < i1; i++) {
                final Object poll = queue.poll();
            }
            System.out.println(j + "queue read");
//            System.out.println("read complete");
            queue.clear();
            queue.close();
            ignite.destroyCache(queueName);
        }
        System.out.println("write complete");
        ignite.cluster().active(false);
        Ignition.stopAll(false);



After this test is complete, I see all this queues on disk, they are not 
cleared. Is there a way to force ignite to clear disk space after queue becomes 
empty?

Reply via email to