Code Monkey home page Code Monkey logo

radargun's Introduction

RadarGun

RadarGun is a data grid and distributed cache benchmarking framework built to test Infinispan and other distributed data grid platforms.

Documentation

Refer to RadarGun's website for documentation.

Quick-start:

The best way to get started with RadarGun is the Five-minute tutorial

Report a bug

... or request a feature using our issue tracker

Java 11

RadarGun requires Java11 to build/test

radargun's People

Contributors

alanfx avatar andyuk1986 avatar belaban avatar danberindei avatar diegolovison avatar dknox avatar galderz avatar gustavolira avatar jlleitschuh avatar mabaffy avatar maniksurtani avatar mgencur avatar mikegoldsmith avatar mlinhard avatar mmarkus avatar pferraro avatar rigazilla avatar rmacor avatar rvansa avatar ryanemerson avatar ryanezil avatar sparkoo avatar vjuranek avatar wburns avatar zhabba avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

radargun's Issues

NPE when reading config file

RG tries to read original server config file and fails with NPE while doing so:

07:58:02,532 ERROR [org.radargun.service.ServerConfigurationProvider] (sc-main) Error while reading configuration file (/standalone/configuration/st-indexed-sync.xml)
java.lang.NullPointerException
        at org.radargun.utils.Utils.readAsBytes(Utils.java:189)
        at org.radargun.service.AbstractConfigurationProvider.loadConfigFile(AbstractConfigurationProvider.java:39)
        at org.radargun.service.AbstractConfigurationProvider.getOriginalConfigs(AbstractConfigurationProvider.java:28)
        at org.radargun.stages.lifecycle.ServiceStartStage.executeOnSlave(ServiceStartStage.java:82)
        at org.radargun.SlaveBase.scenarioLoop(SlaveBase.java:86)
        at org.radargun.SlaveBase$ScenarioRunner.run(SlaveBase.java:150)

Document evaluator

Create a wiki page describing all the options in #{ ... } and ${ ... } syntax, functions, behaviour with lists etc. Also, document all the built-in variables (group.size, cluster.size, group.foo.size, env.ENV_VAR, random.int....)

Update the wiki on the usage of dist.sh

Hi @rvansa @mcimbora @alanfx, this is just a dump of the necessary steps I got from Radim on running the dist.sh script locally. Could be added to the wiki, either to the 5 minute tutorial, or as a separate page. (I don't have the rights to edit the wiki, and Github doesn't support PR's for wiki.)

Title: Using the dist.sh script on a single machine (Fedora 22):

  1. Create virtual interfaces (eth0 is some physical interface)
    sudo ifconfig eth0:1 192.168.11.101 netmask 255.255.255.0
    sudo ifconfig eth0:2 192.168.11.102 netmask 255.255.255.0
    sudo ifconfig eth0:3 192.168.11.103 netmask 255.255.255.0
    sudo ifconfig eth0:4 192.168.11.104 netmask 255.255.255.0
    sudo ifconfig eth0:5 192.168.11.105 netmask 255.255.255.0
    sudo ifconfig eth0:6 192.168.11.106 netmask 255.255.255.0
    sudo ifconfig eth0:7 192.168.11.107 netmask 255.255.255.0
    sudo ifconfig eth0:8 192.168.11.108 netmask 255.255.255.0
    sudo ifconfig eth0:9 192.168.11.109 netmask 255.255.255.0
  2. Make sshd listen on the new interfaces - add the following to /etc/ssh/sshd_config
    ListenAddress 192.168.11.101
    ListenAddress 192.168.11.102
    ListenAddress 192.168.11.103
    ListenAddress 192.168.11.104
    ListenAddress 192.168.11.105
    ListenAddress 192.168.11.106
    ListenAddress 192.168.11.107
    ListenAddress 192.168.11.108
    ListenAddress 192.168.11.109
  3. Create aliases - add the following to /etc/hosts
    192.168.11.101 test1
    192.168.11.102 test2
    192.168.11.103 test3
    192.168.11.104 test4
    192.168.11.105 test5
    192.168.11.106 test6
    192.168.11.107 test7
    192.168.11.108 test8
    192.168.11.109 test9
  4. Restart everything
    sudo systemctl restart network
    sudo systemctl restart sshd
  5. If you don't have a passwordless ssh key, you will need to create one. Make sure you set an output file other than ~/.ssh/id_rsa, so as not to override your old key. Other than that, just hit enter.
    ssh-keygen -t rsa
  6. Test it
    ssh -i --path to the passwordless key-- test1 echo "Interfaces set up"
  7. Finally, run Radargun with the dist.sh script
    sh bin/dist.sh -t -r 'ssh -q -o "StrictHostKeyChecking false" -i ~/.ssh/<passwordless_key>' test1 test2 test3

Release RadarGun 1.1

It's been a long while since there was the 1.0.0 release, and we should probably do another one. There has been a ton of improvements and no plan, so, I'd like to ask you what's your opinion: is there something you want to do before this thick line of release? There's no hurry, but we should start looking into final feature list of 1.1.0, and possibly, some ideas for 1.2.0.
@alanfx @mlinhard @andyuk1986

Refactor Query and CQ integraces

Refactor Query and ContinuousQuery interface so that the builder of the QueryBuilder is separate interface and ContinuousQueryStage is not dependent on Queryable trait.

ClassNotFoundException: com.sun.tools.attach.AttachNotSupportedException

Running client-server scenarios using RG master branch fails with

Caused by: java.lang.NoClassDefFoundError: com/sun/tools/attach/AttachNotSupportedException
        at org.radargun.service.JavaProcessService.createConnectionProvider(JavaProcessService.java:37)
        ... 7 more
Caused by: java.lang.ClassNotFoundException: com.sun.tools.attach.AttachNotSupportedException

2.X branch doesn't seems to be affected by this issue and it runs without any problem. I used Oracle 1.8. Updating com.sun.tool dependency to 1.8.0 in plugins/process/pom.xml doesn't solve the issue.

add thread count sanity check

right now we have a check to verify that memory stays the same between runs. Do the same for the number of threads. This will give us the additional guarantee that we do a proper cleanup.

Nullpointerexception while generating report if no XServer

2014-05-09 17:30:36,442 [main] ERROR [org.radargun.Master] Error in reporter html
java.lang.NullPointerException
at sun.awt.X11FontManager.getDefaultPlatformFont(X11FontManager.java:779)
at sun.font.SunFontManager$2.run(SunFontManager.java:432)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.(SunFontManager.java:375)
at sun.awt.X11FontManager.(X11FontManager.java:32)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:83)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
at java.awt.Font.getFont2D(Font.java:490)
at java.awt.Font.defaultLineMetrics(Font.java:2143)
at java.awt.Font.getLineMetrics(Font.java:2213)
at org.jfree.chart.axis.DateAxis.estimateMaximumTickLabelWidth(DateAxis.java:1437)
at org.jfree.chart.axis.DateAxis.selectHorizontalAutoTickUnit(DateAxis.java:1350)
at org.jfree.chart.axis.DateAxis.selectAutoTickUnit(DateAxis.java:1325)
at org.jfree.chart.axis.DateAxis.refreshTicksHorizontal(DateAxis.java:1597)
at org.jfree.chart.axis.DateAxis.refreshTicks(DateAxis.java:1537)
at org.jfree.chart.axis.DateAxis.draw(DateAxis.java:1836)
at org.jfree.chart.plot.XYPlot.drawAxes(XYPlot.java:3688)
at org.jfree.chart.plot.XYPlot.draw(XYPlot.java:3186)
at org.jfree.chart.JFreeChart.draw(JFreeChart.java:1242)
at org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1412)
at org.jfree.chart.JFreeChart.createBufferedImage(JFreeChart.java:1392)
at org.radargun.reporting.html.TimelineChart.saveChart(TimelineChart.java:130)
at org.radargun.reporting.html.TimelineDocument.writeTimelines(TimelineDocument.java:119)
at org.radargun.reporting.html.HtmlReporter.run(HtmlReporter.java:65)
at org.radargun.Master.run(Master.java:94)
at org.radargun.LaunchMaster.main(LaunchMaster.java:32)
2014-05-09 17:30:36,443 [main] INFO [org.radargun.Master] All reporters have been executed, exiting.
2014-05-09 17:30:36,446 [Thread-0] INFO [org.radargun.ShutDownHook] Master process is being shutdown

Incorrect expected slave count

In client-server mode RG fails to start as it waits for more servers in the cluster than actually configured. It seems it counts also client into cluster size, e.g. for this configuration

<cluster name="1client">
  <group name="server" size="2" />
  <group name="client" size="1" />
</cluster>

if expects cluster of size 3:

[org.radargun.stages.lifecycle.LifecycleHelper] (sc-main) Number of members=[slave1/clustered(local=true, coord=true), slave0/clustered(local=false, coord=false)] is not the one expected: 3

Replace Projections with actual lambdas

Radargun 3.0 is Java 8+, therefore we can use lambdas from now on. Review where Projections is used and replace the uses with lambdas where appropriate.

@rmacor I cannot assign that to you since you don't have write permissions in Radargun, but this could be a nice introduction into lambdas for you, if you're interested.

Test framework hangs under certain conditions.

I found this benching Infinispan under 4 nodes using a TCP stack. Hangs for hours until I kill the processes.
Stack trace on master:
"main" prio=10 tid=0x08059000 nid=0x7055 runnable [0xf745a000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:210)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
- locked <0xdf0d5490> (a sun.nio.ch.Util$1)
- locked <0xdf0d5480> (a java.util.Collections$UnmodifiableSet)
- locked <0xdf0d50e0> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84)
at org.cachebench.Master.startCommunicationWithSlaves(Master.java:154)
at org.cachebench.Master.start(Master.java:69)
at org.cachebench.LaunchMaster.main(LaunchMaster.java:28)
cluster01:
"main" prio=10 tid=0x08059000 nid=0x319c waiting on condition [0xf745b000]
java.lang.Thread.State: TIMED_WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0xdee93940> (a java.util.concurrent.FutureTask$Sync)
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedNanos(AbstractQueuedSynchronizer.java:947)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1239)
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:227)
at java.util.concurrent.FutureTask.get(FutureTask.java:91)
at org.cachebench.Slave.startCommunicationWithMaster(Slave.java:126)
at org.cachebench.Slave.start(Slave.java:57)
at org.cachebench.Slave.main(Slave.java:212)
cluster02 .. cluster04
"main" prio=10 tid=0x08059000 nid=0xa50 runnable [0xf745b000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:210)
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
- locked <0xb42c04c0> (a sun.nio.ch.Util$1)
- locked <0xb42c1120> (a java.util.Collections$UnmodifiableSet)
- locked <0xb42c0480> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84)
at org.cachebench.Slave.startCommunicationWithMaster(Slave.java:66)
at org.cachebench.Slave.start(Slave.java:57)
at org.cachebench.Slave.main(Slave.java:212)

Reporting - use of templates

Lately I've been thinking about using freemarker templating engine to generate HTML reports. IMO current approach is a bit clumsy - generating HTML pages in java code makes reporting quite complex. If we could separate view&model, it would make it easier to perform further changes.

See POC at:
mcimbora@0a771fe

Creating index page was pretty straightforward. When writing page with test results, after a while I realized that I'm just moving logic from backend to frontend, which is not really what we want. After some refactoring, I think it will be feasible just to plug in pojos with data to be displayed. Just wanted to share it here to get your feedback. Do you see current approach as sufficient or do you find using templates appealing (I hope you do!)?

@alanfx @rvansa ?

Web-based GUI console to manage slave nodes

This simple web based console (deployed as a WAR file) could be used to attach to the master process and manage slave nodes.
Additional commands would be needed for the master to be able to communicate with slaves to retrieve information, which the master would then use to update the GUI.
GUI functionality would include:
Slave status
Details of test being run (including fill view of XML config file)
Details of current run being performed
If running from the GUI, we probably want to be able to launch the master in the same VM as the GUI so the WAR file would need to include the CBF jars and start the master process (perhaps a button to launch, re-launch the master?)
In future we could also include the ability to kick-start slaves by making use of some Java-based SSH tool. This would then replace the SSH scripts. :)

Reporting exceptions

org.radargun.reporting.html.TimelineDocument Failed to generate on of the charts:
java.util.concurrent.ExecutionException: java.lang.ArrayIndexOutOfBoundsException: 1000
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
at org.radargun.reporting.html.TimelineDocument.writeTimelines(TimelineDocument.java:186)
at org.radargun.reporting.html.HtmlReporter.writeTimelineDocuments(HtmlReporter.java:169)
at org.radargun.reporting.html.HtmlReporter.run(HtmlReporter.java:50)
at org.radargun.Master.run(Master.java:117)
at org.radargun.LaunchMaster.main(LaunchMaster.java:32)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1000
at org.radargun.reporting.html.TimelineChart.setEvents(TimelineChart.java:101)
at org.radargun.reporting.html.TimelineDocument$1.call(TimelineDocument.java:131)
at org.radargun.reporting.html.TimelineDocument$1.call(TimelineDocument.java:124)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)

org.radargun.Master Error in reporter org.radargun.reporting.html.HtmlReporter@5e838dcd
java.lang.NullPointerException
at org.radargun.reporting.html.ReportDocument.writeResult(ReportDocument.java:146)
at org.radargun.reporting.html.TestReportDocument.writeTest(TestReportDocument.java:51)
at org.radargun.reporting.html.HtmlReporter.writeTestReportDocuments(HtmlReporter.java:152)
at org.radargun.reporting.html.HtmlReporter.run(HtmlReporter.java:51)
at org.radargun.Master.run(Master.java:117)

Concurrent clustered session test

The existing clustered test is a session emulation test. This emulates the HTTP session access pattern which assumes session affinity, and this means threads and nodes do not compete for the same keys.
We should also create a ConcurrentClusteredSessionTest?, which will force a certain degree of overlap of key accesses, from different threads as well as nodes.

SeriesException - Duplicates are not permitted

2014-05-09 17:13:47,151 [main] ERROR [org.radargun.Master] Error in reporter html
org.jfree.data.general.SeriesException: You are attempting to add an observation for the time period Wed Dec 31 18:00:11 CST 1969 but the series already contains an observation for that time period. Duplicates are not permitted. Try using the addOrUpdate() method.
at org.jfree.data.time.TimeSeries.add(TimeSeries.java:612)
at org.jfree.data.time.TimeSeries.add(TimeSeries.java:684)
at org.jfree.data.time.TimeSeries.add(TimeSeries.java:670)
at org.radargun.reporting.html.TimelineChart.setEvents(TimelineChart.java:98)
at org.radargun.reporting.html.TimelineDocument.writeTimelines(TimelineDocument.java:114)
at org.radargun.reporting.html.HtmlReporter.run(HtmlReporter.java:65)
at org.radargun.Master.run(Master.java:94)
at org.radargun.LaunchMaster.main(LaunchMaster.java:32)
2014-05-09 17:13:47,151 [main] INFO [org.radargun.Master] All reporters have been executed, exiting.
2014-05-09 17:13:47,155 [Thread-0] INFO [org.radargun.ShutDownHook] Master process is being shutdown

Add percentiles to csv reporter

Looks like 95th & 99th percentiles are missing in csv reporter output, let's add those. Additionally check whether other data is correct (e.g. 'threads' doesn't seem to be correct when thread count increases throughout the test).
I'd be nice to add some unit tests to check the output.

Memory analysis for clustered tests

An additional metric could optionally be recorded: memory usage on each node. Need to think about the most efficient way to do this (so we don't affect performance too much). Perhaps btrace?
Also need to think of a way to graphically represent this.

add script for report generation

add a script to only generate a report, not run the benchmark.
Workaround: for now just comment out, in the benchmark.xml, all stages, update the report xml element the way you want and then run benchmark.sh

Plot additional information

such as

  • CPU usage
  • memory usage
  • thread context switches (e.g. using vmstat)
  • dropped packets
    etc
    This should be configurable, and might not be usable on all platforms (e.g. vmstat doesn't exist on Windows).

Benchmark emulating Hibernate access pattern

Hibernate's 2nd level cache is a major use case for many distributed caches. We should create a benchmark for this, possibly incorporating the Hibernate libraries and Hibernate's 2nd level cache interfaces to be as realistic as possible - but not exercising Hibernate itself, or any actual database.

Repeat loop - allow looping over custom values

Thanks @alanfx for proposal. Currently repeat loop exposes its state only via repeat.counter variable. It would be nice if repeat loop enabled us to loop over pre-defined list of custom values & use their reference inside the loop.

e.g.
<repeat vars="size:[1, 2, 5, 111]"> <stage1 value-size="${repeat.size}"/> </repeat>

Multiple properties could be defined if we could enforce property lists to be of the same sizes for all defined properties.

<repeat vars="size:[1, 2, 5, 111];count:[3, 10, 50, 68]"> <stage1 value-size="${repeat.size}" count="${repeat.count}"/> </repeat>

It looks like only one pattern could be used at the same time (i.e. from-to/times vs var).

@alanfx @rvansa Wdyt?

Measure the effect of pooled keys

Check that pooling keys (default) provides any performance difference compared to generating the keys before each request, and possibly remove the pooling.

Added info in charts

Perhaps in a summary box or a label somewhere, we should show some extra info on the test: num loops, num threads, read/write ratio, payload size (bytes), payload type (Strings, byte array, etc).

Namespaces for stages

Currently, all stages are inserted into single XSD file, that means all of them are in single XML namespace. With move towards supporting multiple types of plugins (not just Caches, but also JPA implementors and possibly others). We should allow stages to declare their namespaces to prevent naming conflicts.

Allow expanding env variables without `env.` prefix

Currently the variables in scenarios are expanded only when passed as java properties or when starts with env. prefix. It would be nice to expand env. variables directly, without needs to add env. prefix.

ListenersAck cast error

Running test with RegisterListenersStage fails with

08:26:19,050 ERROR [org.radargun.Master] (main) Processing acks on master failed
java.lang.ClassCastException: org.radargun.DistStageAck cannot be cast to org.radargun.stages.cache.listeners.cluster.RegisterListenersStage$ListenersAck
        at org.radargun.stages.cache.listeners.cluster.RegisterListenersStage.processAckOnMaster(RegisterListenersStage.java:84)
        at org.radargun.Master.executeDistStage(Master.java:250)
        at org.radargun.Master.executeStage(Master.java:144)
        at org.radargun.Master.run(Master.java:89)
        at org.radargun.LaunchMaster.main(LaunchMaster.java:32)

Bug in FreeMarker reporters

@rmacor Could you look into this?

Thrown when running benchmark-cs.xml

12:32:36,732 ERROR [freemarker.runtime] (main) Error executing FreeMarker template
FreeMarker template error:
For ".." right-hand operand: Expected a number, but this has evaluated to a sequence (Collections$UnmodifiableRandomAccessList wrapped into f.t.DefaultListAdapter):
==> groups  [in template "timelineReport.ftl" at line 91, column 20]

----
FTL stack trace ("~" means nesting-related):
        - Failed at: #list 0..groups as groupID  [in template "timelineReport.ftl" at line 91, column 10]
----

Java stack trace (for programmers):
----
freemarker.core.NonNumericalException: [... Exception message was already printed; see it above ...]
        at freemarker.core.Expression.modelToNumber(Expression.java:105)
        at freemarker.core.Expression.evalToNumber(Expression.java:98)
        at freemarker.core.Range._eval(Range.java:50)
        at freemarker.core.Expression.eval(Expression.java:78)
        at freemarker.core.IteratorBlock.acceptWithResult(IteratorBlock.java:69)
        at freemarker.core.IteratorBlock.accept(IteratorBlock.java:64)
        at freemarker.core.Environment.visitByHiddingParent(Environment.java:345)
        at freemarker.core.ConditionalBlock.accept(ConditionalBlock.java:48)
        at freemarker.core.Environment.visit(Environment.java:324)
        at freemarker.core.MixedContent.accept(MixedContent.java:54)
        at freemarker.core.Environment.visit(Environment.java:324)
        at freemarker.core.Environment.process(Environment.java:302)
        at freemarker.template.Template.process(Template.java:325)
        at org.radargun.reporting.html.HtmlReporter.processTemplate(HtmlReporter.java:240)
        at org.radargun.reporting.html.HtmlReporter.writeTimelineDocuments(HtmlReporter.java:189)
        at org.radargun.reporting.html.HtmlReporter.run(HtmlReporter.java:62)
        at org.radargun.Master.run(Master.java:135)
        at org.radargun.LaunchMaster.main(LaunchMaster.java:32)

Aggregate values from multiple runs

In order to get more accurate values for a benchmarks, an approach would be to run it several times and merge the results in an 'average' like report.

Something not sent to slaves yet

I am hitting this exception

07:37:22 java.lang.IllegalStateException: Something not sent to slaves yet: {java.nio.channels.SocketChannel[connected local=/10.0.0.74:2103 remote=/10.0.0.74:56234]=java.nio.HeapByteBuffer[pos=0 lim=59 cap=8192]}
07:37:22 at org.radargun.RemoteSlaveConnection.clearBuffer(RemoteSlaveConnection.java:131)
07:37:22 at org.radargun.RemoteSlaveConnection.runStage(RemoteSlaveConnection.java:158)
07:37:22 at org.radargun.Master.executeDistStage(Master.java:236)
07:37:22 at org.radargun.Master.executeStage(Master.java:144)
07:37:22 at org.radargun.Master.run(Master.java:98)
07:37:22 at org.radargun.LaunchMaster.main(LaunchMaster.java:32)
07:37:22 04:37:22,259 WARN org.radargun.RemoteSlaveConnection Failed to send termination to slaves.
07:37:22 java.lang.IllegalStateException: Something not sent to slaves yet: {java.nio.channels.SocketChannel[connected local=/10.0.0.74:2103 remote=/10.0.0.74:56234]=java.nio.HeapByteBuffer[pos=0 lim=59 cap=8192]}
07:37:22 at org.radargun.RemoteSlaveConnection.clearBuffer(RemoteSlaveConnection.java:131)
07:37:22 at org.radargun.RemoteSlaveConnection.mcastObject(RemoteSlaveConnection.java:144)
07:37:22 at org.radargun.RemoteSlaveConnection.release(RemoteSlaveConnection.java:252)
07:37:22 at org.radargun.Master.run(Master.java:131)
07:37:22 at org.radargun.LaunchMaster.main(LaunchMaster.java:32)
07:37:22 04:37:22,260 INFO org.radargun.ShutDownHook Master process is being shutdown
07:37:22 Master 3383 finished with value 127

Make radargun work as advertised :-)

Currently Radargun doesn't work if one follows the Quickstart (https://github.com/radargun/radargun/wiki/Five-Minute-Tutorial). I had to make the following changes to get it working:

  • comment out lines relating to infinispan53 in pom.xml (it tries to download Infinispan 5.3.0-SNAPSHOT from the repos which doesn't exist - perhaps change it so that it uses 5.3.0rc2?)
  • updated benchmark.xml so that it tests infinispan52 rather than a very old version (4)
  • copied all the missing files over from plugins/infinispan51 to plugins/infinispan52
  • updated dist-sync.xml so that namedCache contains "testCache" rather than "x"
  • also, the quickstart mentions cachebench.log which is now called radargun.log

Check data insertion performance

Data loading (using load-data stage) includes multiple steps (getting next key id, key/value generation). Investigate performance impact of the steps & provide optimization if possible.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.