SpikeSourceArray with no spikes on a core not recordable
if you have a SpikeSourceArray core with an empty spike list you get a weird error:

 File ".../spynnaker/pyNN/models/common/eieio_spike_recorder.py", line 110, in _process_spike_data
    raise Exception("Can only read spikes as keys")

script:
import spynnaker8 as sim


sim.setup(timestep=1.0)
sim.set_number_of_neurons_per_core(sim.SpikeSourceArray, 1)
input1 = sim.Population(
    3, sim.SpikeSourceArray(spike_times=[[1], [], [3]]), label="input1")
input1.record("spikes")
sim.run(50)

neo = input1.get_data(variables=["spikes"])
spikes = neo.segments[0].spiketrains
print(spikes)

sim.end()


Same happens without the split over cores if the whole array is just []

diff --git a/spynnaker/pyNN/models/common/eieio_spike_recorder.py b/spynnaker/pyNN/models/common/eieio_spike_recorder.py
index 7afbc02d84..5cdbdf9c81 100644
--- a/spynnaker/pyNN/models/common/eieio_spike_recorder.py
+++ b/spynnaker/pyNN/models/common/eieio_spike_recorder.py
@@ -75,14 +75,16 @@ class EIEIOSpikeRecorder(object):
             placement = placements.get_placement_of_vertex(vertex)
             vertex_slice = graph_mapper.get_slice(vertex)
 
+            n_buffer_times = sum(len(i) for i in vertex.send_buffer_times)
             # Read the spikes
-            raw_spike_data, data_missing = \\
-                buffer_manager.get_data_by_placement(placement, region)
-            if data_missing:
-                missing.append(placement)
-            self._process_spike_data(
-                vertex_slice, raw_spike_data, ms_per_tick,
-                base_key_function(vertex), results)
+            if (n_buffer_times > 0):
+                raw_spike_data, data_missing = \\
+                    buffer_manager.get_data_by_placement(placement, region)
+                if data_missing:
+                    missing.append(placement)
+                self._process_spike_data(
+                    vertex_slice, raw_spike_data, ms_per_tick,
+                    base_key_function(vertex), results)
 
         if missing:
             missing_str = recording_utils.make_missing_string(missing)
['spynnaker/pyNN/models/common/eieio_spike_recorder.py']