Refine search
@Override public MemcachedClientIF get() { try { return new MemcachedClient(connectionFactory, hosts); } catch (IOException e) { log.error(e, "Unable to create memcached client"); throw Throwables.propagate(e); } } }
@Override public Optional<V> get(String key) { return (Optional<V>) Optional.ofNullable(memcachedClient.get(key)); }
public Map<SocketAddress, Map<String, String>> getStats(String cmd) { if(config.isRendInstance()) { List<InetSocketAddress> udsproxyInetSocketAddress = new ArrayList<InetSocketAddress>(memcachedNodesInZone.size()); for(InetSocketAddress address : memcachedNodesInZone) { udsproxyInetSocketAddress.add(new InetSocketAddress(address.getHostName(), config.getUdsproxyMemcachedPort())); } MemcachedClient mc = null; try { mc = new MemcachedClient(connectionFactory, udsproxyInetSocketAddress); return mc.getStats(cmd); } catch(Exception ex) { } finally { if(mc != null) mc.shutdown(); } return Collections.<SocketAddress, Map<String, String>>emptyMap(); } else { return evcacheMemcachedClient.getStats(cmd); } }
@Override public void delete(Set<CacheKeyTO> keys) throws CacheCenterConnectionException { if (null == memcachedClient || null == keys || keys.isEmpty()) { return; } String hfield; for (CacheKeyTO cacheKeyTO : keys) { if (null == cacheKeyTO) { continue; } String cacheKey = cacheKeyTO.getCacheKey(); if (null == cacheKey || cacheKey.isEmpty()) { continue; } hfield = cacheKeyTO.getHfield(); if (null != hfield && hfield.length() > 0) { throw new RuntimeException("memcached does not support hash cache."); } try { String allKeysPattern = "*"; if (allKeysPattern.equals(cacheKey)) { memcachedClient.flush(); } else { memcachedClient.delete(cacheKey); } } catch (Exception e) { log.error(e.getMessage(), e); } } }
@SuppressWarnings("unchecked") @Override public Session get(final Builder builder) { String key = key(builder.sessionId()); Map<String, String> attrs = (Map<String, String>) memcached.get(key); if (attrs == null || attrs.size() == 0) { // expired return null; } // touch session memcached.touch(key, timeout); return builder .accessedAt(Long.parseLong(attrs.remove("_accessedAt"))) .createdAt(Long.parseLong(attrs.remove("_createdAt"))) .savedAt(Long.parseLong(attrs.remove("_savedAt"))) .set(attrs) .build(); }
public void testMemcachedPutEmbeddedGet() throws Exception { // 1. Put with Memcached for (int i = 0; i != numEntries; i++) { Future<Boolean> f = cacheFactory2.getMemcachedClient().set("k" + i, 0, "v" + i); assertTrue(f.get(60, TimeUnit.SECONDS)); } // 2. Get with Embedded from a different node for (int i = 0; i != numEntries; i++) { assertEquals("v" + i, cacheFactory1.getEmbeddedCache().get("k" + i)); cacheFactory1.getEmbeddedCache().remove("k" + i); } }
@Test public void testInvalidNonStickySessionDoesNotCallOnBackupWithoutLoadedSessionIssue137() throws Exception { _service.setStickyInternal( false ); _service.setLockingMode( LockingMode.NONE, null, false ); _service.startInternal(new MemcachedStorageClient(_memcachedMock)); // we must put in our mock again final String sessionId = "nonStickySessionToTimeOut-n1"; // For findSession needed final Request requestMock = mock(Request.class); when(requestMock.getNote(eq(RequestTrackingContextValve.INVOKED))).thenReturn(Boolean.TRUE); _service.getTrackingHostValve().storeRequestThreadLocal(requestMock); final MemcachedBackupSession session = _service.findSession(sessionId); assertNull(session); _service.backupSession( sessionId, false, null ).get(); // check that validity info is not loaded - this would trigger the // WARNING: Found no validity info for session id ... final String validityKey = new SessionIdFormat().createValidityInfoKeyName( sessionId ); verify( _memcachedMock, times( 0 ) ).get( eq( validityKey ) ); }
when( _memcachedMock.get( eq( validityKey ), any ( Transcoder.class) ) ).thenReturn( validityData ); when( futureMock.get() ).thenReturn( Boolean.FALSE ); when( futureMock.get( anyInt(), any( TimeUnit.class ) ) ).thenReturn( Boolean.FALSE ); when( _memcachedMock.add( any( String.class ), anyInt(), any(), any( Transcoder.class ) ) ).thenReturn( futureMock ); _service.backupSession( sessionId, false, "unused" ).get(); verify( _memcachedMock, times( 1 ) ).set( eq( validityKey ), eq( 0 ), any(), any( Transcoder.class ) ); verify( _memcachedMock, times( 1 ) ).add( eq( sessionId ), anyInt(), any(), any( Transcoder.class ) ); verify( _memcachedMock, times( 1 ) ).add( eq( backupSessionKey ), anyInt(), any(), any( Transcoder.class ) ); verify( _memcachedMock, times( 1 ) ).set( eq( backupValidityKey ), eq( 0 ), any(), any( Transcoder.class ) );
public void testFlushDelay() throws Exception { MemcachedClient client = bootstrapClient(); Future<Boolean> b = client.flush(5); assertTrue(b.get()); assertNotNull(client.get("key")); assertNotNull(client.get("key1")); Thread.sleep(8*1000); assertNull(client.get("key")); assertNull(client.get("key1")); }
_service.backupSession( session.getIdInternal(), false, "foo" ).get(); verify( _memcachedMock, times( 1 ) ).delete( eq( oldSessionId ) ); verify( _memcachedMock, times( 1 ) ).set( eq( session.getId() ), anyInt(), any(), any( Transcoder.class ) ); verify( _memcachedMock, times( 1 ) ).delete( eq( new SessionIdFormat().createValidityInfoKeyName( oldSessionId ) ) ); verify( _memcachedMock, times( 1 ) ).set( eq( new SessionIdFormat().createValidityInfoKeyName( session.getId() ) ), anyInt(), any(), any( Transcoder.class ) );
/** * Test for issue #105: Make memcached node optional for single-node setup * http://code.google.com/p/memcached-session-manager/issues/detail?id=105 */ @Test public void testBackupSessionFailureWithoutMemcachedNodeIdConfigured105() throws Exception { _service.setMemcachedNodes( "127.0.0.1:11211" ); _service.setSessionBackupAsync(false); _service.startInternal(new MemcachedStorageClient(_memcachedMock)); final MemcachedBackupSession session = createSession( _service ); session.access(); session.endAccess(); session.setAttribute( "foo", "bar" ); @SuppressWarnings( "unchecked" ) final OperationFuture<Boolean> futureMock = mock( OperationFuture.class ); when( futureMock.get( ) ).thenThrow(new ExecutionException(new RuntimeException("Simulated exception."))); when( futureMock.get( anyInt(), any( TimeUnit.class ) ) ).thenThrow(new ExecutionException(new RuntimeException("Simulated exception."))); when( _memcachedMock.set( eq( session.getId() ), anyInt(), any(), any( Transcoder.class ) ) ).thenReturn( futureMock ); final BackupResult backupResult = _service.backupSession( session.getIdInternal(), false, null ).get(); assertEquals(backupResult.getStatus(), BackupResultStatus.FAILURE); verify( _memcachedMock, times( 1 ) ).set( eq( session.getId() ), anyInt(), any(), any( Transcoder.class ) ); }
session.endAccess(); session.setAttribute( "foo", "bar" ); _service.backupSession( session.getIdInternal(), false, null ).get(); verify( _memcachedMock, times( 1 ) ).set( eq( session.getId() ), anyInt(), any(), any( Transcoder.class ) ); session.setAttribute( "foo", "bar" ); session.setAttribute( "bar", "baz" ); _service.backupSession( session.getIdInternal(), false, null ).get(); verify( _memcachedMock, times( 2 ) ).set( eq( session.getId() ), anyInt(), any(), any( Transcoder.class ) ); _service.backupSession( session.getIdInternal(), false, null ).get(); verify( _memcachedMock, times( 2 ) ).set( eq( session.getId() ), anyInt(), any(), any( Transcoder.class ) );
public void testMemcachedCodec() throws Exception { Cache<byte[], byte[]> cache = cacheManager.getCache(MEMCACHED_CACHE); memcachedClient.set("k1", 3600, "v1").get(); assertTrue(cache.containsKey("k1".getBytes())); String sessionId = interpreter.createSessionId(MEMCACHED_CACHE); Map<String, String> response = interpreter.execute(sessionId, "get --codec=memcached k1;"); assertEquals("v1", response.get(ResultKeys.OUTPUT.toString())); interpreter.execute(sessionId, "put --codec=memcached k2 v2;"); String v2 = (String) memcachedClient.get("k2"); assertEquals("v2", v2); }
public void testEmbeddedPutMemcachedGet() throws IOException { // 1. Put with Embedded for (int i = 0; i != numEntries; i++) { assertEquals(null, cacheFactory2.getEmbeddedCache().put("k" + i, "v" + i)); } // 2. Get with Memcached from a different node for (int i = 0; i != numEntries; i++) { assertEquals("v" + i, cacheFactory1.getMemcachedClient().get("k" + i)); } }
@Override public void shutdown() { client.shutdown(); }
public void set(String key, Object value, int expiration) { client.set(key, expiration, value, tc); }